[collect]图解HTTPS

本文最后更新于2014年7月26日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

今天突然想回顾一下HTTPS的相关知识点,但一时发现自己对这个内容还真的不是很清楚,于是去网上找对应的文章看,下面的这篇文章就是一篇图文并茂的讲解,非常细致、易懂:


我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

HTTPS简介

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图:

1. 客户端发起HTTPS请求

用户在浏览器里输入一个https网址,浏览器连接到服务器的443端口。由于客户端(比如这里的浏览器)对一些加解密算法的支持程度不一样,但是在TLS协议传输过程中必须使用同一套加解密算法才能保证数据能够正常的加解密。所以客户端首先要告知服务端,自己支持哪些加密算法,所以客户端需要将本地支持的加密套件(Cipher Suite)的列表传送给服务端。包含支持的协议版本、支持的加密方法、支持的压缩方法等信息

2. 服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一把锁,只是全世界只有你一个人有这把钥匙,你可以把锁给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4. 客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁给锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5. 传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值作为对称加密算法中的主密钥来进行加密解密了。

6. 服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(密钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和密钥通过某种算法混合在一起,这样除非知道密钥,不然无法获取内容,而正好客户端和服务端都知道这个密钥,所以只要加密算法够彪悍,密钥够复杂,数据就够安全。

7. 传输加密后的信息

这部分信息是服务器端用协商好了之后的密钥(那个由客户端生成的随机值)加密后的信息,可以在客户端被还原。

8. 客户端解密信息

客户端用之前生成的密钥解密服务器端传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策,因为数据是被加密过了的。

=EOF=

原文地址:

http://limboy.me/tech/2011/02/19/https-workflow.html [稍有改动]

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/755.html

《[collect]图解HTTPS》上有6条评论

  1. TLS & SSL 快速进阶
    https://www.villainhr.com/page/2016/10/26/TLS%20&%20SSL%20%E5%BF%AB%E9%80%9F%E8%BF%9B%E9%98%B6

    TLS 算法
      sessionkey 用途
    TLS/SLL 过程
    TLS/SSL 中的基本概念
      Forward Secrey
      ALPN
      SNI
    Session Resumption
      Session ID
      Session Ticket
    CA 证书详情
      CA 链式验证
      CA 合法验证
      证书的吊销
        CRL
        OCSP
        OCSP stapling
    TLS/SSL 优化
      设置 session 缓存
      选择合适的 cipher suite
        False Start
      使用 DH 密钥交换
      开启 OCSP Stapling
      开启 HSTS
      使用 SNI
    完整示例
    参考列表

  2. SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法
    https://xz.aliyun.com/t/2526
    https://www.wst.space/ssl-part1-ciphersuite-hashing-encryption/
    https://www.wst.space/ssl-part-2-diffie-hellman-key-exchange/

    SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法
      SSL的历史
      关于密码学的几点注意事项
      哈希
      接下来是加密
      对称密钥加密
        我们可以使用TLS进行对称加密吗
      非对称密钥加密
        我们可以对所有TLS使用非对称加密吗
      密钥交换算法
        了解SSL中的加密类型
        如何解决
        密钥交换算法
        Diffie-Hellman Key Exchange解释
        方案步骤
        Diffie-Hellman密钥交换背后的数学
        Mallory获得秘密钥匙的机会
        我们现在安全吗
        现在怎么办

  3. SSL/TLS CipherSuite 介绍
    https://blog.helong.info//blog/2015/01/23/ssl_tls_ciphersuite_intro/

    Nginx下配置高性能,高安全性的https TLS服务
    https://blog.helong.info//blog/2015/05/09/https-config-optimize-in-nginx/

    nginx下https配置的优化点,主要有:

    session ticket
    session id cache
    ocsp stapling
    http KeepAlive
    ECDHE等ciphersuite优化
    openssl 编译优化

    TLS协议分析 与 现代加密通信协议设计
    https://blog.helong.info//blog/2015/09/07/tls-protocol-analysis-and-crypto-protocol-design/

    本文目标:

    学习鉴赏TLS协议的设计,透彻理解原理和重点细节
    跟进一下密码学应用领域的历史和进展
    整理现代加密通信协议设计的一般思路

  4. TLS安全通信原理
    http://shanks.leanote.com/post/TLS%E7%9B%B8%E5%85%B3

    加密
    * 对称加密
    * 非对称加密
    安全风险
    TLS
    双向认证
    参考资料

    数字签名是什么?
    http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

    HTTPS那些事之SSL证书
    https://zhuanlan.zhihu.com/p/30980579

    证书格式简介及不同格式之间的转换方式
    https://www.cnblogs.com/eshizhan/archive/2012/10/07/2713557.html

    安全:为什么我们必须停止信任12306的根证书
    https://www.landiannews.com/archives/38679.html

    浅谈对称加密与非对称加密
    https://zhuanlan.zhihu.com/p/49494990

发表评论

电子邮件地址不会被公开。 必填项已用*标注