文档章节

使用Openssl进行PKI实践(含多级证书详细步骤)

niceguy_php
 niceguy_php
发布于 2014/04/02 22:15
字数 1161
阅读 239
收藏 2

Openssl是Linux下的基础安全工具

先简要介绍一些基础知识:

Openssl功能主要有:对称加密(DES、3DES、AES等),非对称加密(RSA),散列(MD5、SHA1等)以及证书的相关操作(创建、申请、颁发、吊销等)

PKI体系成为公钥加密体系,组成部分包括:认证中心、注册中心、证书库、证书废止列表。

Openssl常用证书格式:X509、PKCS7、PKCS12。

证书文件常用存储格式:PEM(BASE64)、PFX或P12(二进制)

 

本文主要实践点:

1、根CA相关操作(私钥生成、生成自认证证书)

2、用户证书相关操作(私钥生成、生成证书签发请求文件、根CA同意请求签发该证书)

3、次级CA证书相关操作(从根CA得到次级CA证书和次级CA私钥之后,再给下属用户签发证书)

实验环境:

RHEL 6.3(KVM虚拟机) rootca.testlibq.com

RHEL 6.3(KVM虚拟机) apache.testlibq.com(以APACHE服务器为次级CA)

Windows XP(KVM虚拟机) xp.testlibq.com(以展示证书)

实验步骤:

1、生成根CA证书

登录到ROOTCA机器

cd /etc/pki/CA/private

openssl genrsa -des3 -out rootca.key 1024  

                 #生成ROOTCA私钥,rootca.key格式为PEM

[设置rootca私钥密码,例如输入rootca]

touch /etc/pki/CA/index.txt   #创建证书数据库文件

echo "01" > /etc/pki/CA/serial  #创建证书序号文件

openssl req -new -x509 -key rootca.key -out /etc/pki/CA/rootca.crt

                 #生成ROOTCA证书(类型为X509),rootca.crt格式为PEM

[输入rootca私钥密码:rootca]

[填入一堆证书信息]

 

由于/etc/pki/tls/openssl.cnf中设置了CA的私钥和证书路径,所以这里使用软链接。

ln -s /etc/pki/CA/private/rootca.key /etc/pki/CA/private/cakey.pem

ln -s /etc/pki/CA/rootca.crt /etc/pki/CA/cacert.pem

这样,CA便设置好了。

查看证书和私钥可以用以下命令:

openssl rsa -in /etc/pki/CA/private/rootca.key -text -noout

openssl x509 -in /etc/pki/CA/rootca.crt -text -noout

 

2、用户证书的相关操作

PS:

用户证书可以在用户端生成私钥和请求文件,然后传递至CA,由CA签发后,发给用户。

也可以由根CA生成用户私钥和请求文件,然后签发后把私钥和证书发给用户。

这里演示后者。

登录到rootca机器(接实验1)

cd /etc/pki/CA/private

openssl genrsa -des3 -out a.key 1024  #生成用户私钥

[set password of a.key]

openssl req -new -key a.key -out a.csr  #生成用户请求文件

[input password of a.key]

[输入一堆证书信息]

openssl ca -in a.csr

[y,y]

 

生成证书位于/etc/pki/CA/newcerts/01.pem

PS:

该证书类型为X509,若需要PKCS12类型证书,请使用

openssl pkcs12 -export -in /etc/pki/CA/newcerts/01.pem -inkey /etc/pki/CA/private/a.key -out a.pfx[输入私钥密码][设置传输密码]

 

3、生成证书链

此节内容网上文章较少,我研究了好久才搞出来。

 

首先上面两个实验是连着做的,第三个实验请把上面的环境清除。

登录到ROOTCA

cd /etc/pki/CA/private

touch ../index.txt

echo "01" > ../serial

openssl genrsa -des3 -out rootca.key 1024

ln -s rootca.key cakey.pem

openssl req -new -x509 -key rootca.key -out /etc/pki/CA/rootca.crt -extensions v3_ca

ln -s /etc/pki/CA/rootca.crt /etc/pki/CA/cacert.pem

这里查看一下rootca证书:

openssl x509 -in /etc/pki/CA/rootca.crt -text -noout

确定extensions中,有basicConstraint CA:TRUE,那么代表正确。

PS:basicConstraint称为基础约束,若有CA:TRUE,证明该证书具有CA效力。(所以上述实验1、2中并不严谨,这点在需要证书链的场合尤为重要)

cd /etc/pki/CA/private

openssl genrsa -des3 -out apache.key 1024

openssl req -new -key /etc/pki/CA/private/apache.key -out apache.csr

openssl ca -in apache.csr -out apache.crt -extensions v3_ca

PS:这个extensions至关重要,关系到apache这个证书有没有资格再颁发证书给用户。

 

登录到apache主机


ln -s /etc/pki/CA/private/apache.key /etc/pki/CA/private/cakey.pem

ln -s /etc/pki/CA/apache.crt /etc/pki/CA/cacert.pem

下面制作用户证书

cd /etc/pki/CA

touch index.txt

echo "01" > serial

openssl genrsa -des3 -out private/user1.key 1024 [user1]

openssl req -new -key private/user1.key -out private/user1.csr[user1][一堆证书信息]

openssl ca -in private/user1.csr -extensions usr_cert[y,y]

PS:这里-extensions usr_cert不必要。

制作证书链

将rootca的证书和apache的证书整合到一个文件

cd /etc/pki/CA/certs

cp /etc/pki/CA/apache.crt chain.pem

cat rootca.crt >> chain.pem

验证证书链

openssl verify -CAfile /etc/pki/CA/certs/chain.crt /etc/pki/CA/newcerts/01.pem

(若显示Verify OK,表示验证证书链成功)

转换用户证书为PKCS12

openssl pkcs12 -export -in /etc/pki/CA/newcerts/01.pem -inkey /etc/pki/CA/private/user1.key -out /etc/pki/CA/private/user1.pfx -chain -CAfile /etc/pki/CA/certs/chain.crt

最后将user1.pfx复制到Windows中,导入证书,便于展示。

结果如图:

 


本文转载自:http://liboqiu.blog.51cto.com/1932711/1123537

共有 人打赏支持
niceguy_php
粉丝 2
博文 34
码字总数 8351
作品 0
成都
程序员
私信 提问
openssl的应用及创建CA

openssl命令行工具: 众多的子命令实现各种安全加密功能; ]# openssl ? 显示的内容有 Standard commands(标准命令) enc, dgst, ca, req, genrsa, rand, rsa, x509, passwd, ... Message Di...

Vayne36
06/26
0
0
Linux openssh openssl

Linux openssh openssl 笔记日期20180524 目录 openssh 配置ssh基于密钥的方式认证 服务器端配置文件 ssh服务的最佳实践 OpenSSL 三个组件 PKI: Public Key Infrastructure 建立私有CA 证书申...

Winthcloud
06/29
0
0
加密解密基础、PKI及SSL、创建私有CA

NIST:美国国家标准与技术研究院提出的数据安全大致包含如下内容: 安全*分为主动和被动**: 主动***:窃听 被动***:伪装、重放、消息篡改、拒绝服务 安全机制主要有: 加密、数字签名、访问...

Angry丶Bird
06/26
0
0
Web开发必须了解的密码学技术

对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解密的过程中,使用相同的秘钥;而非对称加密在加密过程中使用公钥进行...

邱振源的博客
2017/11/14
0
0
openssl的应用及私有CA相关内容

以CA为核心生成的一套安全架构体系我们称之为: PKI:Public Key Infrastructure,公钥基础设施;其包含的内容: 1.签证机构:CA 2.证书注册机构:RA 3.证书吊销列表:CRL 4.证书存取库:CR ...

狐狸和鳄鱼
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
0
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
2
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
0
0
Python的安装及文件类型、变量

一、为什么学习python 服务于大数据、人工智能、自动化运维。 简单易学 代码简洁 薪资高 近几年越来越火 二、Python的安装 linux 系统默认安装, CentOS7 默认安装了python2.7 安装ipython y...

枫叶云
昨天
1
0
JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理...

ThinkGem
昨天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部