初识OpenSSL

首先来认识一下SSL和TLS

  SSL:Secure Sockets Layer 安全套接层协议 由Netscape公司在1994年发布;

  TLS:Transport Layer Security 传输层安全协议 由IETF在1999年发布 与SSL基本上兼容;

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

    第一阶段:ClientHello
         客户端支持的协议版本、加密算法、压缩算法等
         并生成一个随机数,用于之后生成的“会话密钥”

    第二阶段:ServerHello
         确认使用的协议版本、加密算法等,也生成一个随机数,用于之后生成的“会话密钥”,
         并向客户端发送服务器证书;

    第三阶段:
         客户端验证服务器证书(发证机构,证书完整性,证书持有者,证书有效期,吊销列表等),在确认无误后取出其公钥;
         发送以下信息至服务器:
            一个随机数,
            编码变更通知,
            客户端握手结束通知;

    第四阶段:
         收到客户端发来的随机数,计算生成本次会话用到的“会话密钥”;
         发送以下信息至客户端:
            编码变更通知,
            服务器握手结束通知;

如图阐述手动在用户A和用户B之间进行加密通信的简单原理。

  

      第一步:用户A,B都是CA的信任用户,他们事先需协商好进行加密通信所需要的加密算法等等,并相互认证各自的身份。

      第二步:用户B将需要发送的数据(元数据)进行单向加密,并用自己的私钥对数据特征码进行加密(也就是数字签名)。

      第三步:用户B将元数据和数字签名用一个一次性的密钥进行对称加密,并用A的公钥加密这段对称加密密钥,然后将其一起发送给用户A。

      第四步:用户A接收到数据后,先用自己的私钥解密对称加密,得到数字签名和元数据;再用B的公钥解密数字签名,如果能解开,说明数据是B发来的(验证B的身份);

          然后再用单向加密加密元数据,将特征码与解密后的数字签名对比,如果相同,则证明数据没有被篡改(保证了数据的完整性)。

  

原文地址:https://www.cnblogs.com/trymybesttoimp/p/5973162.html