文档章节

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

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

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
成都
程序员
私信 提问
Linux openssh openssl

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

Winthcloud
2018/06/29
0
0
openssl的应用及创建CA

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

Vayne36
2018/06/26
0
0
http与https的区别我真的知道吗

之前每次看到类似“http与https的区别?”的问题时,都会自己思考一下答案,好像只是浅显地知道https比http安全,但究竟为什么更安全,却又似乎说不出个所以然,或者说很多细节地方自己都是不...

ScoutYin
2018/05/10
0
0
OpenSSL--Window生成证书实战

Windows下使用OpenSSL生成自签证书(亲测) 一,前言 经常写博客的小伙伴儿都知道,大家一般在前言里面会提到为什么写这篇博客,而我这篇博客 主要是探讨OpenSSL自签名证书,用于对安全性要求...

ifanjiaxin
2015/06/05
0
3
openssl的应用及私有CA相关内容

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

狐狸和鳄鱼
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7 下安装 Nginx

1、添加Nginx存储库 要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令 yum install epel-release 2、安装Nginx 现在Nginx存储库已经安装在您的服务器上,使用以下yum命令安装Nginx yum i...

Oo若离oO
29分钟前
0
0
漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
今天
1
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
今天
7
0
跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要...

周立_ITMuch
今天
3
0
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部