HTTPS
HTTPS
超文本传输安全协议(HTTP OVER SSL),HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。占用443端口通讯
握手过程:
浏览器为client, 网站为server。
浏览器发送自己支持的算法列表和加密规则
网站从算法加密规则中选取一个,将身份信息以证书(CA)形式发回,证书包含网站地址,加密公钥,证书颁发机构,同时自身生成私钥
浏览器获得网站的证书,要做以下操作:
验证证书合法性,从根CA一直验证到具体颁发的SSL证书,即类似于自顶向下遍历一条路径,如果受信任,则浏览器栏会显示一个锁头,否则提示不信任
浏览器生成随机密钥(用于之后的对称加密),用网站发来的公钥加密
用约定好的hash算法计算握手消息,然后用对称密钥对消息进行加密,再将所有的信息发送
网站接收到后,用私钥解密出对称密钥,然后用密钥解密出握手消息,比于浏览器端发来的hash值进行比对。之后再用密钥加密握手消息发回
浏览器解密该握手消息,并判断是否与网站发来的hash值一致,如果是,则握手结束,对称密钥通过非对称加密传输完毕,之后所以的通信都通过对称密钥进行加密后再传输。
涉及到的算法
非对称算法:RSA, DH(很少了), DSA
对称算法: AES, DES
HASH算法:MD5, SHA-256
图示:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Legendary!