https工作原理
浏览器和服务器进行https传输时会进行一次握手
- 浏览器会向服务器请求证书
- 服务器将证书返回给浏览器,证书是第三方机构颁发,证书上带有服务器的域名、服务器的公钥、第三方机构等信息,证书是用第三方机构的私钥进行加密的
- 当浏览器接收到服务器返回的证书时,会用三方机构的公钥对证书进行解密,浏览器和操作系统都会维护一个权威的第三方机构列表,包括它们的公钥,解密完成以后会对证书进行验证,查看该证书是否合法
- 验证证书合法后,浏览器会生成一串随机数字,并利用证书中提供的公钥对随机数字进行加密,然后用随机数字对握手信息进行对称加密,同时也会对握手信息进行Hash计算,然后发送给服务端。
- 服务端接收到浏览器发送回来的信息以后,会利用自己的私钥对随机数字进行解密,得到随机数字,然后利用随机数字对握手信息进行解密,并对握手信息进行Hash计算,并比较是否和浏览器发送过来的相同,然后服务器在使用随机数字加密一段握手信息,并对握手信息进行Hash计算发给浏览器,
- 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。