• 证书的创建依赖加密算法,请看http://yunweigou.blog.51cto.com/6299641/1637108


  • 前言,随着网络的发展,由于使用http协议通信的双方数据是明码格式的,故容易被其他网络主机盗取或偷换数据,无法对数据的安全提供保障。为保证数据的保密性及完整性,SSL问世


  • SSL:Secure Sockets Layer 安全套接字层

    • 可理解为传输层和应用层之间的半层,对数据进行加密和解密

    • 是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。

    • 更多详细信息,请查看http://fr.wikipedia.org/wiki/SSL

       

  • OPENSSL:开源界SSL

    • libcrypto# 加密、解密所使用的库文件
      libssl#ssl协议的一种实现
      openssl#多用途命令行工具,每种功能都能使用专用的子命令完成
    • Standard commands #标准命令

    • asn1parse         ca                ciphers           cms               

    • crl               crl2pkcs7         dgst              dh                

    • dhparam           dsa               dsaparam          ec                

    • ecparam           enc               engine            errstr            

    • gendh             gendsa            genpkey           genrsa            

    • nseq              ocsp              passwd            pkcs12            

    • pkcs7             pkcs8             pkey              pkeyparam         

    • pkeyutl           prime             rand              req               

    • rsa               rsautl            s_client          s_server          

    • s_time            sess_id           smime             speed             

    • spkac             ts                verify            version           

    • x509              


    • Message Digest commands (see the `dgst' command for more details)#消息摘要命令:单向加密算法

    • md2               md4               md5               rmd160            

    • sha               sha1              


    • Cipher commands (see the `enc' command for more details) #加密解密相关的命令

    • aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       

    • aes-256-cbc       aes-256-ecb       base64            bf                

    • bf-cbc            bf-cfb            bf-ecb            bf-ofb            

    • camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  

    • camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          

    • cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         

    • des               des-cbc           des-cfb           des-ecb           

    • des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       

    • des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      

    • des-ofb           des3              desx              idea              

    • idea-cbc          idea-cfb          idea-ecb          idea-ofb          

    • rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           

    • rc2-cfb           rc2-ecb           rc2-ofb           rc4               

    • rc4-40            seed              seed-cbc          seed-cfb          

    • seed-ecb          seed-ofb          zlib

    • 组成部分:




    • [root@chanlay3 pki]# tree CA
      CA
      ├── certs    证书文件存放的位置
      ├── crl      证书吊销列表存放的位置
      ├── newcerts 新创建的证书的存放位置
      └── private  CA私钥存放
    • 生成私钥:

    • 括号不可省略,相当于打开子shell进程运行的

    • # openssl genrsa -out testkey 2048
    • 私钥一般只为自己可读可写须改其权限

    • # chmod 600 testkey
    • 可改为:

    • # (umask 077;openssl genrsa -out testkey 2048)
    • openssl enc -e -des3 -a -salt -in fstab -out fstab.des3 #对文件加密(对称加密)
      openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab.new #对文件解密(加解密同一密钥)
    • 例如:

    • 生成密钥对儿操作过程:

    • 证书目录:/etc/pki/CA



使用openssl创建私有CA:

  • 生成私钥

    • 私钥用于签发证书时,向证书添加数字签名使用

14 Linux之openssl工具创建私有CA_私有ca

发起证书签署请求并自签证书

  • 每个通信方都导入此证书至“受信任的证书颁发机构”

14 Linux之openssl工具创建私有CA_私有ca_02

-new:生成新的证书签署请求
-key:私钥文件路径,用于提取公钥
-days #:证书有效期,单位为天
-out:输出文件(证书)保存位置
-x509:直接输出自签署的证书,通常只有构建CA时用

至此CA构建完成。各通信方就可向该CA请求证书了

更多详情参考/etc/pki/tls/openssl.conf文件(须新建辅助文件,如下步骤)

提供必要的辅助文件

  • 14 Linux之openssl工具创建私有CA_私有ca_03

    

  • 向节点发证书

    • 验证请求者信息

    • 直接签署证书

    • 生成私钥:

    • 生成证书签署请求

      14 Linux之openssl工具创建私有CA_linux_04

    • 把请求crt文件通过某方式发送给CA


    • 节点发起证书申请

    • CA签发证书

14 Linux之openssl工具创建私有CA_linux_05注:这里给大家示范错误例子,签名没问题,问题在于请求者与被请求者区域不一致

从生成证书签署请求那里错误就开始了,正确如下

14 Linux之openssl工具创建私有CA_私有ca_06

14 Linux之openssl工具创建私有CA_私有ca_07

至此,证书签署完毕!看着界面好舒服,有没有~
将会看到辅助文件的变化,如下:

14 Linux之openssl工具创建私有CA_私有ca_08

  • 将签署好的证书发还给请求者

  • 证书的吊销:

    • 获得吊销证书的序列号

    • 实现证书的吊销

    • openssl crl -gencrl -out THISCA.crl

    • openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject

    • openssl ca -revoke /etc/httpd/ssl/httpd.crt

    • echo 01 > /etc/pki/CA/crlnum

    • 更新证书吊销列表

    • 吊销证书

    • 生成吊销证书的编号


至此完毕。