我们知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,然后进行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 签署该请求,生成证书,再传给客户端