http协议是明文传送,会导致容易被窃听、篡改和冒充。
加密解密基础:对称加密一般包含公钥和私钥两部分,外部访问通过公钥加密,服务器端通过私钥解密。
https通讯协议:
https通讯协议包括http协议和SSL/TSL协议。
- 浏览器发起服务器443端口请求,请求携带了浏览器支持的加密算法和哈希算法。
- 服务器收到请求,选择浏览器支持的加密算法和哈希算法。
- 服务器将数字证书返回给浏览器(证书是向第三方机构申请的浏览器信任的,也可以自己颁发,需要浏览器手动信任)
- 浏览器开始数字证书认证环节,通过浏览器内置TLS完成的:
- 浏览器首先从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有,会提示非权威机构颁发。如果找到了机构,则取出对应机构的公钥。
- 用机构的证书公钥解密得到证书的内容和证书的签名(网站的网址、网站的公钥、证书的有效期。PS:这些内容自己手动颁发的时候会去设置,可以自行体验下)。根据证书内容校验签名的合法性(网址、有效期等)。
- 浏览器生成一个密钥N,并使用公钥对密钥N进行加密。
- 浏览器将加密的密钥N传给服务器。
- 服务器用自己的私钥解密得到密钥N。
- 服务器以N为密钥,使用对称加密算法加密网页内容并传输给浏览器。
- 浏览器以N为密钥,使用之前约定的解密算法获取内容。
前5步是协议握手的过程,校验证书的合法性。非对称加密计算量较大,只有校验证书的时候使用,其他时候使用的是对称加密。