我们知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,然后进行TPC/IP的三次握手,接着客户端与服务器端建立ssl会话。
会话过程如下:
简而言之就是:
第一步:客户端和服务器双方共同商量使用什么加密算法,怎么加密等等。 第二步:客户端发送证书给服务器,目的为了使服务器相信他。 第三步:服务器相信了,就生成对称密钥,将请求页面发送给客户端。 最后,客户端使用服务器发送的密钥加密后,将请求回应给服务器。
在这个过程中由于服务器要验证客户端身份的真假,因此,这里需引入了第三方权威颁发机构,即CA,可以给客户端发证书。而服务器相信CA的,因此,客户端拥有CA的证书,从而客户端就能访问服务端。
接下来,我们就来实现私有CA证书的认证。
准备工作:两台主机,centos7做CA证书,centos6做web服务器
步骤:一、CA证书的制作(centos7)
1、查看是否安装了openssl软件
# rpm -qa openssl
2、生成自签证书
【在/etc/pki/CA目录下完成】
(1)创建证书索引数据库和指定第一个证书颁发序列号
(2)生成私钥
补充:从私钥中提取公钥(公钥是从私钥提取出来的)
openssl genrsa -in /etc/pki/CA/private/cakey.pem -pubout
(3)生成自签证书【编辑/etc/pki/tls/openssl.cnf】
补充:私有CA的配置文件/etc/pki/tls/openssl.conf,内容有:
这里之介绍我们需要的内容:
[ CA_default ]
dir =/etc/pki/CA #定义默认CA目录
certs = $dir/certs #客户端证书路径
crl_dir = $dir/crl #证书吊销列表的路径
database = $dir/index.txt #保存已发出去的证书,由于检索
new_certs_dir = $dir/newcerts # 保存刚生成的证书
certificate = $dir/cacert.pem # CA自己的证书
serial = $dir/serial # 证书的序列号,默认是从01开始
crlnumber = $dir/crlnumber #证书吊销列表的工作号
crl = $dir/crl.pem # 证书吊销列表的文件
#证书吊销列表保存着曾经发出的证书,但是并未过期,而是由于某些原因不能使用了(安全机制)
private_key = $dir/private/cakey.pem # 私钥文件
因此我们需要在/etc/pki/CA/目录下创建私钥文件,CA证书、cert、crl、newcerts目录,创建serial和index.txt文件。
由此,CA证书便创建完成。
二、为客户端颁发证书(centos6)
(1)生成一个私钥以及证书颁发请求。
(2)将证书颁发请求复制到CA服务器上
2、签署证书
3、将证书发送给客户端(centos7)
三、重启web服务器
#service httpd restart
四、查看证书
结束了,一个完整的CA自签证书认证已经完成了。
总结:整个创建证书的步骤:
1、创建私钥CA:
创建一对密钥
生成自签证书
2、客户端需要:
创建一对密钥
生成颁发证书请求(请求文件后缀为.crt)
将请求发给CA
3、CA 签署该请求,生成证书,再传给客户端
转载于:https://blog.51cto.com/youguofusi/1970168