zoukankan      html  css  js  c++  java
  • HTTPS

    什么是SSL

    HTTPS HTTP+SSL

    SSL安全套接层,TSL传输安全层

    TLS与SSL在传输层对网络连接进行加密

    SSL的一大优势在于它独立于上层协议,和HTTP结合即为HTTPS,和WebSocket结合即为WSS

    通常认为SSL和TSL指代同一个标准,两者之间的差异极小

    SSL原理

    不同的SSL握手过程存在差异,分为以下三种

    • 只验证服务器
    • 验证客户端和服务器
    • 恢复原有会话

    验证服务器建立链接的过程

    1. 客户端发送Client Hello 消息,该消息包括SSL版本信息一个随机数 random1一个session id,和浏览器支持的密码套件cipher suite

      密码套件包含了以下四种途径的算法:

      • 密钥交换算法,RSA,PSK等
      • 数据加密算法,AES 256,RC4等
      • 报文认证信息码(MAC)算法,MD5,SHA等
      • 伪随机数(PRF)算法
    2. 服务器确定本次通信使用的SSL的版本和其他信息,发送Server Hello给客户端,包括服务器支持的SSL版本一个伪随机数random2服务器的cipher suite

    3. 服务器发送CA证书给客户端

    4. 服务器发送Server Hello done

    5. 客户端验证服务器证书的合法性后(Certificate Verify), 利用证书中的公钥加密 premaster secret 作为Client Key Exchange 的消息发送给服务器

    6. SSL客户端发送Change Cipher Spec 消息,该消息属于SSL密码变化协议

    7. 客户端计算历史消息的hash值,然后使用服务器公钥加密后发送给服务器,服务器进行同样的操作,然后两个值结果相同标识密钥交换成功

    8. 服务器发送Change Cipher Spec 消息

    9. 服务器计算历史消息的hash值,通过交换后的密钥加密,将其作为finished消息发送给客户端,客户端利用交换后的密钥解密,如果和本地历史消息相同就证明服务器身份。握手结束。

    密钥交换步骤

    在对称加密的情况下,客户端需要将解密的密钥发送给服务器。在非对称加密的情况下,则是要将自己的私钥发送给对方

    一个密钥交换通常分为Certificate Verify 以及 Client Key Exchange 两个步骤, 以RSA算法为例

    1. 客户端收到服务端传来的证书后,先验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数 random3,再用服务端的公钥加密 Random3 生成PreMaster Key

    2. 服务端用自己的私钥解出这个PreMaster Key,得到客户端生成的random3,再加上前面生成的random1random2,至此,服务端和客户端都有了random1 + random2 +random3,两边
      再根据同样的算法就可以生成一份密钥,握手结束后的应用层数据都是使用这个密钥进行对称加密

    对称加密与非对称加密

    • 对称加密,信息的发送方和接收方用同一个密钥去加密和解密数据。优势是速度快,适用于对大数据量进行加密
    • 非对称加密,信息发送者用公钥去加密,接收者用私钥去解密。公钥机制灵活,但加解密速度慢。

    关于CA

    CA(证书授权),通常表示一个第三方组织,专门用来验证服务器证书的准确性。

    一个CA文件包含的内容包括用户信息,CA签发机构信息,用户公钥,有效日期,CA签发机构签名(CA签发机构用私钥签名,用于将用户信息+用户公钥等信息进行签名确保内容真实性),CA签发机构的公钥(用于让用户研恒签发证书是否是CA签发机构签发的)

  • 相关阅读:
    Convert to a source folder or rename it.
    git revert 后悔了 还原修改前的版本 + git 常用命令
    android switch语句报错:case expressions must be constant expressions
    解读ContentResolver和ContentProvider
    sdk命令
    向Android模拟器中批量导入通讯录联系人
    Rational Rose2007下载安装教程以及问题处理
    java代码打包成jar以及转换为exe
    Timusoj 1982. Electrification Plan
    poj 3254 Corn Fields
  • 原文地址:https://www.cnblogs.com/goOtter/p/10219153.html
Copyright © 2011-2022 走看看