openssl生成CA签署 及 加密解密基础

openssl  生成私有CA 及签署证书

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

1. 在openssl CA 服务器端生成私钥

    cd /etc/pki/CA/private/

    (umask 077;openssl genrsa -out ./cakey.pem 4096) 

                (     )             : 表示在子shell中运行进程

                umask 077   : 表示文件仅自己可读写

                genrsa          :  使用rsa 加密方式生成密钥对

                -out               :  密钥输出文件位置

               4096             : 表示生成4096位密钥对

2. 在 CA 服务器端生成  CA 自签证书 

    cd /etc/pki/CA/

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

                 -x509    : 仅在CA自签署证书时使用

                 -new     : 表示生成新的证书

                 -key       :   指向第一步生成的私钥文件  (会从私钥文件中提取私钥生成公钥)

                 -days     :   证书有效时长

                 -out       :   证书输出位置 

       

3.  为CA 服务器端生成必要的目录和文件

     mkdir /etc/pki/CA/{certs,crl,netcerts}       (如果目录已存在无需创建)

     touch   /etc/pki/CA/{serial,index.txt}

     echo 01 > /etc/pki/CA/serial      

待签署客户端操作

 1.  生成私钥  

      cd /etc/http/ssl/

      (umask 077;openssl genrsa -out /etc/http/ssl/private.pem 4096)

2. 生成证书

    openssl  req -new -key /etc/http/ssl/private.pem -out /etc/http/ssl/http.pem -day 365

3. 将生成的证书文件拷贝到CA服务器

    scp /etc/http/ssl/http.pem [email protected]:/tmp/

4. 在CA 服务器签署证书

    openssl ca -in /tmp/http.pem -out /etc/pki/CA/http.pem -days 365 

        提示相关确认请求输入 yes 

至此证书以签署完毕 ,将  /etc/pki/CA/http.pem 拷贝至待签署客户端 即可  

     查看证书操作: openssl x509 -in /etc/pki/CA/http.pem -noout -serial -subject   

       

openssl  加密解密基础知识  

    安全的目的: 保密性

                           完整性

                           可用性

常见加密算法:

       对称加密算法: DES,3DES,AES,...

       单向加密算法: md5,sha1,sha256,sha384,sha512 .....   (用于实现数据完整性)

       公钥加密        :  和与之配对的私钥成对,用于数字签名,验证主体身份   

        密钥交换       : DH    

httpS 协议的交互过程: 

    假设 A client  向 B server 发送页面访问请求

    1. A 向 B 发送证书请求  

           包含内容:  A 当前http浏览器支持的加密算法与协议

                              支持的压缩算法

                              支持的协议类型 ssl  or   TLS 1.x

                              生成随机数  (用于与对端的随机数结合生成加密密钥,用于对端对称加密用)

   

  2.  B 向A 发送自己的证书

           包含内容:  确定通信加密算法与协议

                               确定通信协议版本  ssl   or  TLS 1.x 

                               自己的证书

                               随机数

 

  3.  A 验证B的证书 

              验证过程: 1. A使用CA的公钥解密B的证书

                                 2. A使用单向加密算法对证书加密得到特征码,与证书特征码进行比对,确认证书完整性

                                 3. 验证内容:

                                            主体名称

                                            证书有效期限

                                            签发机构

                                            证书是否被吊销

             验证结束发送信息给B 

             发送内容: 

                                  一个随机数

                                  编码变更通知 (表示随后的信息由双方协商的加密算法进行通信)

                                  客户端握手结束

  

  4.   B 受到 A 发来的第三个随机数 pre-master-key后,计算本次会话的密钥;

               向客户端发送如下信息:

                                   编码变更通知

                                   服务端握手结束

                                            

       

        

        

                

猜你喜欢

转载自www.cnblogs.com/qingfengguoke/p/12302329.html