美文网首页iOS开发技术分享程序员技术干货
深入HTTPS系列三(如何通信)

深入HTTPS系列三(如何通信)

作者: muice | 来源:发表于2016-12-04 18:07 被阅读917次

    继上篇深入HTTPS系列二(加密&证书)后,
    该篇主要讲HTTPS通信过程。

    ** HTTPS的通信过程**

    1、客户端发起HTTPS请求
    用户在浏览器里输入一个https网址,然后连接到server的443端口。

    2、服务器的配置
    采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过(即需要自己在网络验证接口写验证代码),才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。
    这套数字证书是一对公钥和私钥,即不对称的加密方式。

    3、服务器传送证书
    服务器接受到请求,向客户端传送证书。这个证书其实就是公钥及数字签名,只是包含了很多信息,如证书的颁发机构,过期时间等等。

    4、客户端解析证书
    客户端会验证数字签名是否有效(CA证书会客户端内置CA公钥自动验证,自定义证书需要自己代码验证),比如颁发机构,过期时间等等。如果发现异常,则会弹出一个警告框,提示证书存在问题。
    如果证书没有问题,那么就产生一个hash值,然后对该hash值用公钥进行加密。

    5、服务端解密信息
    HTTPS协议继而传送的是用证书加密后的hash值给服务器。服务器通过私钥解密获得hash值。这个hash值就是秘钥。以后客户端和服务端的通信就通过秘钥进行对称加密。现在客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

    ** HTTPS的优缺点**

    总结:

    1. HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击。
      2.当你使用第三方不安全WIFI的时候,也很容易受中间人攻击。
    2. HTTPS仍是现行架构下最安全的解决方案。
    3. 申请SSL证书还需要资金的支持。
    4. HTTPS协议由于需要验证,加密解密数据。会降低机器的性能,相关测试数据表明使用HTTPS协议只有使用HTTP协议传输效率的十分之一。

    关于“客户端证书”

    前面介绍的过程仅仅使用了“服务端证书”——通过服务端证书来确保服务器不是假冒的。  
    除了“服务端证书”,在某些场合中还会涉及到“客户端证书”。所谓的“客户端证书”就是用来证明客户端(浏览器端)访问者的身份。  
    比如在某些金融公司的内网,你的电脑上必须部署“客户端证书”,才能打开重要服务器的页面。  
    客户端证书的验证类似服务端证书验证,一般大多数场景是不需要验证访问者身份的,毕竟你的产品就是给别人使用的。
    此外额外再验证客户端,会使性能进一步下降。

    此文到此结束!
    请继续关注下文,深入HTTPS系列四(中间人攻击)

    相关文章

      网友评论

      • 遛猫狂魔:中间缺少了秘钥协商的过程吧
      • xiAo__Ju:服务器接受到请求,向客户端“传动”证书,应该是“传送”吧
        muice:@xiAo__Ju 不好意思,写错了 :relaxed:

      本文标题:深入HTTPS系列三(如何通信)

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