HTTPS

超文本传输安全协议(HTTP OVER SSL),HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。占用443端口通讯


握手过程:


浏览器为client, 网站为server。

  1. 浏览器发送自己支持的算法列表和加密规则

  2. 网站从算法加密规则中选取一个,将身份信息以证书(CA)形式发回,证书包含网站地址,加密公钥,证书颁发机构,同时自身生成私钥

  3. 浏览器获得网站的证书,要做以下操作:

    • 验证证书合法性,从根CA一直验证到具体颁发的SSL证书,即类似于自顶向下遍历一条路径,如果受信任,则浏览器栏会显示一个锁头,否则提示不信任

    • 浏览器生成随机密钥(用于之后的对称加密),用网站发来的公钥加密

    • 用约定好的hash算法计算握手消息,然后用对称密钥对消息进行加密,再将所有的信息发送

  4. 网站接收到后,用私钥解密出对称密钥,然后用密钥解密出握手消息,比于浏览器端发来的hash值进行比对。之后再用密钥加密握手消息发回

  5. 浏览器解密该握手消息,并判断是否与网站发来的hash值一致,如果是,则握手结束,对称密钥通过非对称加密传输完毕,之后所以的通信都通过对称密钥进行加密后再传输。


涉及到的算法

  • 非对称算法:RSA, DH(很少了), DSA

  • 对称算法: AES, DES

  • HASH算法:MD5, SHA-256

图示:

1