首页 > 代码库 > 一次加密通信和SSL通信,openssl自建CA
一次加密通信和SSL通信,openssl自建CA
1、生成数据2、用单向加密数据生成特征码3、用自己的私钥加密特征码放在数据后面4、生成临时会话密钥加密特征码和数据5、用对方的公钥加密临时密钥
OpenSSL构建私有CA
构建私有CA
1、生成私钥
2、自签署证书
给节点发放证书
1、节点申请证书
节点生成私钥
生成证书签署请求
把请求文件发送给CA
2、CA签署证书
CA验证请求者的信息
签署证书
把签署好的证书发还给请求者
验正证书:
1、使用CA的公钥的解密证书的数字签名
CentOS 6.6 openssl自建CA
有2台虚拟机,一台CA,一台http服务器
一、建立私有CA
1、在CA上生成私钥文件 在/etc/pki/CA/private
[root@localhost ~]# cd /etc/pki/CA
[root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
用()是为了在子shell中运行,不影响当前的umask
-out为输出私钥的位置
2048为密钥的长度
[root@localhost CA]# openssl req -new -x509 -key ./private/cakey.pem -days 3665 -out cacert.pem
-new 为生成新的证书,会要求用户填写相关的信息
-x509 通常用于自签署证书,生成测试证书或用于CA自签署
-key私钥位置
-days申请的天数(默认30天)
-out生成位置
以上自签时填写的相关信息可以通过/etc/pki/tls/openssl.cnf配置文件添加(以上截图已经填写过的效果),从而可以复制到其他主机生成签署请求的时候重复填写
countryName_default
stateOrProvinceName e_default
0.organizationName_default
organizationalUnitName_default
以下2个不能使用默认值
commonName
emailAddress
二、给http服务器发放证书
假设:用httpd服务,其位置为/etc/httpd/conf/certs,certs为自己创建的文件夹
1、http服务器申请证书:在http服务器上进行
生成私钥
# (umask 077; openssl genrsa -out httpd.key 1024)
# openssl req -new -key httpd.key -out httpd.csr -days 3665
- 在HTTP服务器端不需要加-x509,
# scp REQ_HOST:/path/to/somewhere/
somefile.csr /path/to- 源端 目的端
第1次签署在/etc/pki/CA目录下创建以下文件
# touch {index.txt,serial}
# echo "01" > serial 首次必须添加序列号否则会报错unable to load number from /etc/pki/CA/serial error while loading serial number
# openssl ca -in httpd.crs -out http.crt
# cat index.txt
V 151128012240Z 01 unknown /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com
查看index.txt,最前面有一个大V# cat serial
serial由01变0202
# ll /etc/pki/CA/newcerts/ 会有一个文件生成
total 8
-rw-r--r-- 1 root root 7878 Nov 28 09:23 01.pem
[root@localhost tmp]# openssl ca -in http.csr -out http.crt
Using configuration from /etc/pki/tls/openssl.cnf
Error opening CA certificate /etc/pki/CA/cacert.pem
140176870549320:error:02001002:system library:fopen:No such file or directory:bss_file.c:39
140176870549320:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate
# openssl x509 -in /path/to/somefile.crt -noout -text|-subject|-serial
# openssl x509 -in http.crt -noout -subject
subject= /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com
# openssl x509 -in http.crt -noout -serial
serial=01
-subject选项信息比较多,就不贴出来了
1、第一次吊销需创建文件,生成编号,在CA端进行
touch /etc/pki/CA/crlnumber
echo "01" > /etc/pki/CA/crlnumber
[root@localhost crl]# openssl ca -gencrl -out ca.crl
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/crlnumber: No such file or directory
error while loading CRL number
140175277365064:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen(‘/etc/pki/CA/crlnumber‘,‘r‘)
140175277365064:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
# openssl ca -revoke /etc/pki/CA/newcerts/01.pem 吊销证书
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
# cd /etc/pki/CA/crl/
[root@localhost crl]# openssl ca -gencrl -out thisca.crl 更新证书吊销列表
Using configuration from /etc/pki/tls/openssl.cnf
# cat index.txt 由V变成了R
R 151128012240Z 141128021144Z 01 unknown /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com
# cat crlnumber
由01变0202
附件列表
- 一次会话.jpg
一次加密通信和SSL通信,openssl自建CA