CA通俗点讲就是让两个互不认识的人相信彼此的中间人功能类似我们常使用的支付宝。

   我们要给别人×××书,首先自己得是个证书颁发服务器,得自己有证书,所以首先我们在服务器端创建自己的证书

   Server创建证书的步骤:

   1:我们的配置文件中有三个目录我们CA目录下是没有的,这里需要我们手动创建三个目录:

       /etc/pki/CA/serial  /etc/pki/CA/index.txt  /etc/pki/CA/crlnumber

    serial文件是记录已签证书编号的文件我们可以规定从01开始:

    #echo 01 > serial


   2:创建私钥,

     说明:公钥是从私钥中提取出来的,

     #cd /etc/pki/CA

     #openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

     我们会发现我们创建的私钥对别人都有读取的权限,这很不安全所以我们使用下面的这种方法:

     #(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki

    解释:()表示在子shell环境中运行命令,我们在子shell中声明的环境变量不会影响当前shell的环境变量。

   3:私钥出来了,我们提取公钥,提取公钥有一个专用工具rsa

   #  openssl rsa [-in filename][-text][-pubout][-out filename]

      从那个文件中以text格式提取出并保存至那个文件中

   #openssl rsa -in ./private/cakey.pem -text -pubout -out

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _02

   4:自签证书:用到的命令是openssl req:先介绍下这个命令的常用选项


openssl req [-in filename]读进数据文件但是这里用[-key filename]

               [-key filename]指定私钥文件从中抽取公钥

               [-days n]有效期限,不给默认是1年

               [-x509]自签证书的格式(自签时用,申请时不用)

               [-out filename]将申请请求放那

               [-new]新发起的

    #openssl req -new -key /etc/pki/CA/private/cakey.pem -x509 -out cacert.pem -days 3650

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _03     注意:Common Name (eg, your name or your server's hostname) []:ca.yalishanda.com

这项是将来通信验证的名称给谁就叫ca.

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _04

  到这里,服务器S端的准备工作就准备就绪。我们可以从客户端申请证书了。

  在客户端我们是给web服务做认证,那么我们的私钥最好是保存到httpd的配置文件目录下:

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _05

  生成密钥以后我们需要生成证书请求:

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _06

    生成证书请求,需要把证书请求发送给服务器端,给我们盖戳,签证:用到的命令是scp

    本机ip是172.16.23.31

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _07

    解释:scp apache.csr 172.16.23.21:/tmp/

        发送apache.csr文件到服务器172.16.23.21的tmp目录下。

   注意:传送证书签署请求的时候需要用到服务器端的密码

    我们去服务器端看看

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _08   证书签署请求到了服务器端,我们就可以在服务器端给其颁发证书了。

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _09

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _10   证书颁发完我们需要把证书发给客户端:

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _11

  在客户端查看下:

openssl+httpd实现服务器端的证书创建,自签以及客户端的证书申请_openssl 证书 pki _12

 OK,服务器端的证书自签以及客户端的证书申请操作全部完成。