https 相关知识 (openssl)

秘钥算法和协议
   对称加密 加密和解密使用同一个秘钥
   DES:Data Encryption Standard(不安全,容易被破解) 56位秘钥
   3DES:Triple DES
   AES:Advanced Encryption Standard;(安全性特别高)秘钥128bits 192bits 256bits,384bits
   。。。
   特性:
      1、加密和解密使用同一个秘钥
      2、将原始数据分割成固定大小的块,逐个进行加密;
   缺陷:
      1、秘钥过多;服务器要和每个访问者都要生成一个秘钥
      2、秘钥分发困难;
   公钥加密 :秘钥分为公钥和私钥 (比对称加密效率低很多)
           公钥:从私钥中提取产生,公开给所有人:pubkey
           私钥:通过工具创建,secret key;
   特点:公钥加密私钥解密   私钥加密公钥解密


  用途:
      数字签名:让接收方确认发送方的身份
      秘钥交换:发送方用对方的公钥加密一个对称秘钥,发送对方
      数据加密
           算法:RSA(可以作为签名也可以作为加密)、DSA(只能做签名)、ELGamal
     
   单向加密:即提出数据指纹;只能加密,不能解密;
       特征:定长输出
       功能:完整性验证
       算法:
             md5 128 bits  
             sha1 160bits 


  密钥交换: IKE

      公钥秘钥,缺点是加密后的秘钥还是通过网络传给对方,有风险


      DH算法 工作原理:假设A B两个要共同约定一个对称加密的秘钥。        
      首先 A要自己定义一个x数(随机的),同时和B约定一组数P和G(这两个数是公开的),然后A利用数据公式P^x%G=A1 得到A1这个数,然后把A1发给B,这个时候,虽然别人知道P和G和计算公式,但是也无法又A1反过来得到x。接着B收到了A1,B自己也定义一个只有自己知道的数y,然后跟A的做法一样,根据公式 P^y%G=B1 得到一个数B1发给A。这个时候,A拥有了B发给自己的B1,B拥有了A发给自己的A1,注意,这个时候A1和B1是不相等的,然后,A拿着B1再用公式 B1^x(其实就是P^y%G^x)得到一个B2,同理,B拿着A1也用公式A1^y(其实就是P^x%G^y)得到一个A2,然后大家就会发现其实B2是等于A2的,然后,A2,B2就是我们要的加密的秘钥,而且在整个过程中,A2或B2没有在网络上传输过,所以显得非常安全。

    PKI:Public Key Infrastructure(公钥基础设施)
        签证机构:CA
        注册机构:RA
        证书吊销列表:CRL
        证书存取库:


    x.509:定义了证书的结构以及认证协议标准
     版本号
     序列号
     签名算法ID
     发行者名称
     有效期限
     主体名称
     主体公钥
     发行者的唯一标识
     主体的唯一标识
     扩展
     发行者签名


 
    SSL:Secure sockets Layer
        网景公司开发1994
    TLS:Transport Layer Secutity
        IETF:1999 年发布
             v1.0 v1.1 v1.2 v1.3
    
    开源实现OpenSSL
    
对于Linux系统:OpenSSL ,GPG(pgp)
  OpenSSL 由三部分组成:
      libencrpt库
      libssl库

      openssl 多用途命令行工具


      SSL主要有三步:
      客户端向服务器端索要证书并验证证书;
      双方协商生成“会话秘钥”;
      双方采用会话秘钥进行加密通信

  第一阶段:ClientHello
       支持的协议版本,比如tls1.2 
       客户端生成一个随机数,稍后用户生成“回话秘钥”
       支持的加密算法,比如AES、RSA
       支持的压缩算法


  第二阶段:ServerHello(服务器回应)
      确认使用的加密通信协议版本,比如tls1.2;
      服务器端生成一个随机数,稍后用于生成“会话秘钥”
      确认使用的加密方法

  第三阶段:
      验证服务器证书;
      发送一下信息给服务器端
      一个随机数
      编码变更通知
      客户端握手结束通知


   第四阶段:
      收到客户端发来的第三个随机数,计算生成本次会话所有的会话秘钥
      服务端握手结束。

      Openssl
       众多子命令,分为三类
       标准命令
       消息摘要(dgst 子命令)
       加密命令 (enc子命令)

     标准命令:enc ca req genrsa 。。。。

    对称加密
    工具:openssl enc

   //加密
   openssl enc -e -des3 -a -salt -in aaa -out aaa.cipher
   //解密
   openssl enc -d -des3 -a -salt -in aaa.cipher -out ccc.plain

   单向加密
     openssl dgst
     openssl dgst -md5 bbb.palin

   生成随机数:
   工具
     openssl rand

     openssl rand -base64 10  ==》3f38ii5B3BqKEA==
     openssl rand -hex 10 == 》af7b04d09c1743a17ba7

     生成私钥
     openssl genrsa 1024 -out /tmp/mykey.private
     提出公钥
     openssl rsa  -in /tmp/mykey.private -pubout

      CA:
       公共CA 和私有 CA
      openssl ca配置文件

      /etc/pki/tls/openssl.cnf


     构建私有的CA
      在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;

      步骤:
        (1) 生成私钥
    openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096
         
(2) 生成自签证书
    openssl req -new -key -x509 /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655


        (3) 为CA提供所需的目录及文件
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
         touch /ect/pki/CA/{serial,index.txt}
         echo 01 > /etc/pki/CA/serial


要用到证书进行安全通信的服务器,需要向CA请求签署证书;


步骤:以httpd为例
 (1) 用到的证书的主机生成私钥;
  
      mkdir /etc/httpd/ssl
         cd /etc/httpd/ssl
 openssl genrsa -out /etc/httpd/ssl/httpd.key 2048
(2)生成证书签署的请求
     openssl req -new-key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
           
(3)将请求通过可靠方式发送给CA主机;


 (4) 在CA主机上签署证书;
     openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd/crt -days 365


     查看证书中的信息
        openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
           
  吊销证书
     步骤
     (1) 客户端获取要吊销证书的serial(在使用证书的主机执行)
          xpenssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
              
     (2) CA主机吊销证书
          先根据客户提价的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致


                  吊销:
    openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
     其中的SERIAL要换成证书真正的序列号;


    (3)生成吊销证书的吊销编号(第一次吊销证书时执行)
            echo 01  > /etc/pki/CA/crlnumber


     (4) 更新证书吊销的列表
            openssl ca -gencrl -out thisca.crl

   查看crl文件:
          openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值