环境准备:
一、准备两台测试机,CA服务器ip地址是192.168.10.103,证书申请者ip是192.168.10.120
二、确保Linux主机以安装openssl软件包,可以使用rpm查看
三、确保有openssl加密功能组件:
openssl(多功能命令工具)、libcrypto(公共加密库)、libssl(SSL协议的实现)
Openssl构建私有CA:
一、 构建私有CA:
1、生成私有秘钥
命令解释:
# (umask 077; openssl genrsa -out cakey.pem 2048)
umask 077: 保证秘钥文件其他人没有读写执行权限,在()内执行表示对当前子shell有效
openssl: 多功能命令工具
genrsa: 指定加密算法
-out /path/to/somefile: 表示将生成的私钥保存到指定的位置
2048 : 秘钥的长度,可以根据需要自定义
根据私钥提取公钥:
#openssl rsa -in private/cakey.pem -pubout
命令解释:
openssl: 多功能命令工具
rsa : 指定加密算法
-in /path/to/somfile.pem : 读取指定位置的私钥
-pubout: 将提取的公钥输出
2、自签署证书
命令解释:
#openssl req –x509 -new -key private/cakey.pem -out acert.pem -days 3655
openssl : 多功能命令工具
req:是openssl 的子命令,用于生成PKCS#10格式的证书签署请求
-x509 :自签发证书,只有在给自己签发证书时才可以使用
-new: 生成新证书
-key /path/to/somfile.pem: 指定私钥的存储位置
-out /path/to/somefile.pem : 指定生成的证书存储位置
-days NUM: 指定证书的有效期
第一次签发证书时需要创建index.txt和serial两个文件
index.txt: 证书的索引文件
serial: 证书的序列号,echo 01 > serial 指定证书的初时序列号
二、 给节点发放证书:
假设: 是http服务,在/etc/httpd/conf/certs中配置
1、 节点申请证书:
(1)生成私钥
命令解释:
# (umask 077; openssl genrsa -out cakey.pem 2048)
umask 077: 保证秘钥文件其他人没有读写执行权限,在()内执行表示对当前子shell有效
openssl: 多功能命令工具
genrsa: 指定加密算法
out /path/to/somefile: 表示将生成的私钥保存到指定的位置
2048 : 秘钥的长度,可以根据需要自定义
(2) 生成证书签署请求
命令解释:
#openssl req -new -key https.key -out https.cst -days 3655
openssl: 多功能命令工具
req :是openssl 的子命令,用于生成PKCS#10格式的证书签署请求
-new: 生成新的证书请求
-key /path/to/somefile : 指定私钥证书的位置
-out /path/to/somefile: 指定证书签署请求存储位置
-days NUM: 申请证书的有效期
(3) 把请求文件发送给CA
scp:利用ssh协议在主机之间安全实现文件传输 ,具体使用方法请Google或者百度
2、CA签署证书:
(1) 验证请求者的信息
(2) 签署证书
命令解释:
#openssl ca -in /tmp/https.cst -out /tmp/https.crt -days 3655
openssl: 多功能命令工具
ca: 是openssl 子命令,用于签发证书
-in /path/to/somefile.csr: 指定证书签署请求位置
-out /path/to/somefile.ctr : 指定签发的证书存放位置(此仅限于测试,实际生 产中请存放其他位置)
签署成功后index.txt和serial内容将会变化
(3)把签署好的证书发还给请求者#scp /tmp/https.crt 192.168.10.103:/etc/httpd/conf/cert
至此证书签发完成,可以用于公司内部使用;要查看证书内容,可以使用一下命令:
#openssl x509 -in /etc/httpd/conf/cert/https/crt -noout {-text|-serial|–subject}
3、证书吊销
(1)获取证书的serial和subject信息(需要在证书持有端进行查看)命令解释:
#openssl x509 -in /etc/httpd/conf/cert/https.crt -noout -serial -subject
openssl: 多功能命令工具
x509: 通用的证书格式
-in /path/to/somefile.crt : 指定证书的位置
-noout: 不输出编码的版本请求
-serial: 输出序列号
-subjec: 输出申请信息
(2)吊销(在CA服务器上操作)
① 根据证书持有者提交的serial和subjec信息与CA服务器中的index.txt信息进行对比 是否一致
② 吊销证书
命令解释:
# openssl ca -revoke /etc/pki/CA/newcerts/01.pem
openssl : 多功能命令工具
ca: 是openssl子命令,是指定ca的最简单应用
-revoke /path/to/somfile.pem: 取消指定的证书
③ 生成吊销证书的编号(如果是第一次吊销,则需要此操作)
#echo 01 > /etc/pki/CA/crlnumber
④更新证书吊销列表
#cd /etc/pki/CA/crl
#openssl ca –gencrl -out https.crl
命令解释:
openssl :多功能命令工具
ca: 是 openssl 的子命令,指定ca的简单应用
-gencrl: 生成吊销列表索引信息
-out /path/to/somfile.crl :将生成的吊销列表信息保存指定文件中
⑤查看吊销列表的信息
#openssl crl -in https.crl -noout -text
本人是菜鸟,写的不好,请大侠请勿喷,仅供个人学习使用
原文地址:http://jingfu.blog.51cto.com/6184921/1649977