https 真的有点难懂,我到时还需再整理下,先放几个链接
https://www.douban.com/note/730886931/
https://www.sohu.com/a/280034604_604699
https://www.bilibili.com/video/BV1mZ4y1H7CH?p=2
加密的方式
对称加密:加密和解密都使用同一个密匙
非对称加密:加密使用的密匙和解密使用的密匙不相同的
哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆
数字签名:证明某个消息或者文件是某人发出/认同的
HTTP数据传输流程
浏览器将支持的加密算法信息发送给服务器
服务器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器
浏览器验证证书的合法性,并结合证书公钥加密信息发给服务器
服务器使用私钥解密信息,验证哈希,加密相应消息回发浏览器。
我们首先了解几个基本概念。
共享密钥加密(对称密钥加密):加密和解密同用一个密钥。加密时就必须将密钥传送给对方,那么如何安全的传输呢?
公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗走。
但由于公开密钥比共享密钥要慢,所以我们就需要综合一下他们两者的优缺点,使他们共同使用,而这也是HTTPS采用的加密方式。在交换密钥阶段使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式。
步骤
-
服务器把自己的公开密钥登录至数字证书认证机构。
-
数字证书认证机构用自己的私有密钥向服务器的公开密码署数字签名并颁发公钥证书。
-
客户端拿到服务器的公钥证书后,使用数字签名认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名,以确认服务器的公开密钥的真实性。
-
使用服务器的公开密钥对报文加密后发送。
-
服务器用私有密钥对报文解密。