openssl是实现ssl协议的应用程序,可以使用yum install -y openssll来安装,构建私有CA之前先来了解openssl的使用;

    openssl的主配置文件:/etc/pki/tls/openssl.cnf

                     [CA_default]

                            dir:CA的主目录

                            certs:已颁发证书的存储位置

                            crl_dir:已吊销证书的存储位置

                            database:证书索引文件

                            new_certs_dir:新颁发证书的存储位置

                            certificateCA证书文件

                            serial:证书颁发时的当前序列号

                            crlnumber:吊销证书的当前序列号

                            crl:当前使用的CRL

                            private_key:CA私钥

                            RANDFILE:私有随机数生成器文件

       私有CA作为单位或组织内部多台主机验证身份使用,不在互联网上起作用,是基于ssl协议利用openssl搭建的,openssl私有CA使用的x.509的证书,构建私有CA分为CA服务器操作和客户机操作。

1、构建私有CA

       a、私有CA服务器生成私钥

wpid-c4de30f5eb135497efbc595f884edd49_cl

[root@www1 CA]# (umask 077; openssl genrsa
-out private/cakey.pem 2048) 命令解释

       括号():在当前shellzishell中执行

       umask
077:设定默认umask,这样生成的证书权限就是600,除了root用户其他用户均没有操作权限;

       genrsa:生成私钥命令

       -out:输出文件,后面是私钥输出的路径名字

       2048:加密位数

       b、生成自签署证书

              req子命令:生成PKCS#10格式的证书签署请求

              -new:生成新的证书签署请求;

              -key /path/to/private_key_file:私钥文件路径;

              -daysn:证书有效时长;

              -out /path/to/request_file: 生成的证书请求文件路径;

              x509:专用于CA生成自签署证书时;

              -newkey rsa:NUM  无需事先专门生成私钥文件,而是生成请求时直接生成私成私钥,并提取公钥用于证书;也就是说上面a步骤可以不执行,而直接使用此命令直接生成私钥并签署;

 wpid-c4de30f5eb135497efbc595f884edd49_cl      

在给服务器签署证书的时候需要和此处的位置和公司内容保持一致,因为这是一个私有CA,是属于这个公司,只能签署这个公司内部的服务器;

       [root@www1 CA]# touch ./{index.txt,serial}

       [root@www1 CA]# echo 01 > serial

  生成索引文件和序号,这里需要手动添加序号01,以后再签署证书时就不用了;

2、给节点服务器发放证书

       私有CA服务器上面已经构建好了,开始为内部服务器发放证书

      此处是以http服务器为例,证书位置为/etc/httpd/conf/certs/

      ahttp服务器生成私钥

      和上面CA服务生成私钥的方法一样;

wpid-c4de30f5eb135497efbc595f884edd49_cl             b、生成私钥之后,要想让CA签署需要生成证书签署请求;

wpid-c4de30f5eb135497efbc595f884edd49_cl

    密码可以留空,这样证书签署请求就已经生成,需要私有CA服务器签署;

     c、把请求文件发送给CA

         scp httpd.csr CA服务器IP:路径(例如:172.16.100.1:/tmp

     d、私有CA服务器签署证书:此处是在CA服务器上进行

wpid-c4de30f5eb135497efbc595f884edd49_cl

签署时会显示证书的详细信息,会有两次确认是否签署,直接y就可以签署;这样这书就            已经签署好了;

    此时查看CA服务器索引文件会发现已经多了一条,正是签署的那台服务器的证书

wpid-c4de30f5eb135497efbc595f884edd49_cl             e、将签署好的证书发送给服务器

     scp /tmp/httpd.src  http服务器IP:路径(例如:172.16.100.2:/etc/httpd/conf/certs

     此时证书已经签署好了,如果客户端想通过https访问,则需要去CA服务器下载CA服务器的   正式,  具体的认证过程:客户端通过https访问时,服务器会将自己的证书发送给客户端,客户端   根据下载的CA证书中的公钥解密服务器的证书的数字签名,如果和证书中描述的信息符合,则证   明来源正确,再通过单向加密算法,提取http服务器的证书文件的特征码,对比CA证书中的记录,      如果符合则说明证书没有被篡改,再次验证http服务器主体信息与服务器地址是否相同,相同则会  将信任http服务器。

[root@www1 certs]# openssl x509 -in httpd.crt -noout -subject

              查看证书主体信息

[root@www1 certs]# openssl x509 -in httpd.crt -noout -serial

              查看证书序列号

 [root@www1 certs]# openssl x509 -in httpd.crt -noout -text

              查看证书文本信息

3、证书吊销

       服务器不使用了,证书需要吊销,以免出现安全问题;

       a、获取要吊销证书的序列号serial,利用上面的命令可以查看

wpid-c4de30f5eb135497efbc595f884edd49_cl

      

bCA服务器操作

              1、根据证书持有者提交的serialsubject信息来与index.txt数据库文件中的信息是否一致;

              2、吊销证书

wpid-c4de30f5eb135497efbc595f884edd49_cl             

             

 

3、生成吊销证书的编号(如果是第一次吊销)

              [root@www1 CA]# echo 01 > /etc/pki/CA/crlnumber

              4、更新证书吊销列表

                     [root@www1 CA]# cd crl

                     [root@www1 crl]# openssl ca -gencrl -out thisca.crl

              此时我们再来查看index.txt文件

wpid-c4de30f5eb135497efbc595f884edd49_cl

之前的V已经变成R了,说明序列号为01的证书已经时吊销状态了

4、私有CA的构建以及给服务器签署、吊销证书过程就是这样子,有什么不对的地方诚心希望指出。