笔记 · 2025年3月17日 0

【笔记】https的工作原理

https简单来说就是http over ssl或tls协议,一开始是用ssl协议的,但是现代基本都是使用tls协议了,只是传统上叫成ssl/tls,然后它是在应用层和传输层之间新增一个加密层,通过这个方法来确保会话数据传输的安全性,https工作过程的重点是建立tls握手,握手具体可以分为以下几步,

第一步是客户端给服务器打招呼,发送一个client hello,里面包含很多信息,包括客户端支持的tls版本号、支持的加密算法和压缩算法,还有生成的一个随机数等等。

第二步,服务器接收到呃这个client hello之后知道了对方都支持些什么,根据这个信息去选取这次会话要使用的加密算法,然后也生成一个随机数,再向ca机构获取数字证书,证书里带有服务器的私钥,然后将以上信息都放到一个叫server hello的响应报文,返回给客户端。数字证书是服务器用来向客户端证明自己的身份真实性的。

第三步是客户端收到响应之后,去验证这个数字证书的真实性,看他是不是由可信机构颁发的,有没有过期,域名对不对,有没有被篡改过,如果发现证书有问题,浏览器就会弹出警告,说明此网站不安全。

如果证书没问题的话就进入第四步,浏览器生成一个预主密钥,然后用服务器的公钥去加密这个预主密钥,加密后传输给服务器,因为这个加密过后的密钥只能用服务器的私钥来解密,所以这样传输是很安全的。服务器接收到密钥之后就用私钥将它解密,两边就同时拥有了一个相同的预主密钥和两个相同的随机数,再用相同的加密算法将这三个数据计算出一个相同的密钥,这个就是后面要用来给所有传输数据进行加密的会话密钥了,达成密钥共识后,tls握手就结束了。