TLS握手

作者: 瓢鳍小虾虎 | 来源:发表于2021-10-13 11:47 被阅读0次

    所谓握手,就是传输层创建TCP连接的过程,https在http握手(TCP3次握手,传输层协议)基础上多了一次握手(应用层的协议),主要为了确认服务端合法,并向服务端传递通讯秘钥。

    以下的过程算作TLS的一次握手:

    1. 传递秘钥前首先客户端需要确认服务端的身份是否合法:
      客户端发起请求服务端地址,
      服务端响应返回证书(包含公钥,还有其他认证信息);
      客户端验证这个证书是否合法,如果是CA认证的,浏览器不会有任何反应,如果是服务端自己私建的,浏览器会弹窗让用户选择是否信任此证书。

    2. 客户端确认证书合法代表信任了服务端,然后就是传送通讯秘钥的过程:
      客户端自己生成了一个随机字符串作为通讯秘钥,并用公钥对通讯秘钥加密(还包括通讯用的加密算法),
      发送给服务端,
      服务端用私钥解密得到了通讯秘钥和通讯加密算法。

    3. 开始传输报文:
      服务端使用通讯秘钥和约定好的通讯加密算法对报文加密并返回,此后客户端和服务端的报文都会使用此秘钥和算法加密传输(对称加密)。

    所以,https创建链接经历了4次握手,断开和http一样,4次挥手。
    TLS握手是非对称加密,通讯报文过程是对称加密。

    关于浏览器认证CA证书过程:

    1. 浏览器会查看服务端证书上的CA机构,搜索本地是否有此CA的根证书,如果没有就弹窗提示,有就往下进行。
    2. 使用CA根证书的公钥对服务端证书的指纹指纹算法解密,拿到指纹指纹算法
    3. 使用指纹算法对服务端证书的摘要进行加密,的得到指纹
    4. 对比2个指纹,一样则通过验证。

    CA认证也是一个非对称加密过程,只不过TLS是“公钥加密,私钥解密”,CA正好返过来,“公钥解密,私钥加密”,用“指纹和指纹算法”来确认公钥解密的结果是正确的。
    这种不用向CA机构请求就能验证证书的设计还是很巧妙的。

    参考文章:
    http与https握手那些事
    浏览器CA认证流程

    相关文章

      网友评论

          本文标题:TLS握手

          本文链接:https://www.haomeiwen.com/subject/dfyjoltx.html