我们知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,然后进行TPC/IP的三次握手,接着客户端与服务器端建立ssl会话。 
会话过程:
   A --> 服务器端
   B --> 客户端
        第一步:AB双方商量使用什么加密算法,怎么加密等等。 第二步:A发送证书给B,为了使B相信他。 第三步:B相信了,就生成对称密钥,将请求页面发送给A。 最后,A使用B发送的密钥加密后,将请求回应给B。
        由于B要验证A的身份,因此,这里引入了第三方权威颁发机构,即CA,可以给A发证书。而B是相信CA的,因此,B拥有CA的证书。
则,A生成一对公钥,发送给CA进行签署(可以理解为盖章)得到证书,然后返回给自己,并且配置服务器,使之能使用证书。而B收到A的证书后,使用保存在主机上的CA证书去验证。
 
接下来,我们就将实现私有CA的认证。
准备工作:
两台主机,一个做CA(172.16.13.1),一个做web服务器端(172.16.13.2)。
[注--172.16.13.2主机必须配置完成web服务器]
步骤:
一、CA证书的制作(CA的主机上)
   1、查看是否安装了openssl软件
      #  rpm -qa openssl
   2、生成自签证书
  【在/etc/pki/CA目录下完成】
  (1)生成私钥
 一步步实现Linux中的CA认证_CA认证
 
  (2)生成自签证书
      //由于生成证书是需要填写一些国家,省份等信息。这里将这些信息直接写入其默认配置文件中,以后就不用再填写了。
  【编辑/etc/pki/tls/openssl.cnf,】找到大约136行左右:
 一步步实现Linux中的CA认证_linux_02
 
【生成自签证书】
一步步实现Linux中的CA认证_linux_03
  
  //要想将CA作为私有CA使用,则还需要在/etc/pki/tls/openssl.cnf文件中修改默认路径:
并且将CA工作时所需的目录创建出来。
 一步步实现Linux中的CA认证_CA认证_04
 
 一步步实现Linux中的CA认证_linux_05
 
   由此,CA证书便创建完成
 
二、配置web服务器为CA客户端(在172.16.13.2主机上)
   1、在/etc/httpd目录下,创建一个ssl目录
 一步步实现Linux中的CA认证_linux_06
  
   2、在ssl目录下生成一个私钥以及证书颁发请求。
 一步步实现Linux中的CA认证_CA认证_07
 
 一步步实现Linux中的CA认证_linux_08
  
   3、将证书颁发请求复制到CA服务器上
一步步实现Linux中的CA认证_linux_09
 
三、签署证书(CA服务器上)
  使用下边一条命令进行签署:
  #  openssl  ca  -in  /tmp/httpd.csr  -out  /tmp/httpd.crt  -days  3650
 
四、验证(CA主机上)
   查看/etc/pki/CA目录下的index.txt以及serial,生成了证书索引
一步步实现Linux中的CA认证_CA认证_10
 
五、将证书发送给客户端(172.16.13.2)
一步步实现Linux中的CA认证_linux_11
 
六、配置服务器能使用此证书
  在/etc/httpd/conf.d目录下的ssl的配置文件ssl.conf
 【在大概31行左右,修改其内容】
 一步步实现Linux中的CA认证_linux_12
 
【在大约114行左右,修改其内容】
 一步步实现Linux中的CA认证_linux_13
 
七、重启web服务器
     # service httpd restart
 
八、在浏览器验证
   1、使用u盘或者远程连接等工具将CA服务器上/etc/pki/CA/cacert.pem文件拷贝到自己的window桌面。
   2、将cacert.pem的后缀名修改为.crt,打开后安装证书
 一步步实现Linux中的CA认证_linux_14
 
3、安装后即可在浏览器打开我们之前请求证书的页面。
一步步实现Linux中的CA认证_linux_15
 
 
    好啦!一个完整的CA自签证书认证已经完成了,是不是觉得很神奇呢?那么就动手制作吧!