HTTPS
2020 network httpHTTPS 就是在安全的传输层上发送 HTTP。HTTPS 在将 HTTP 报文发送给 TCP 之前,先将其内容发送给一个安全层 SSL/TLS,对其进行加密。
在 HTTPS 中,客户端打开一条到服务器端口 443 的连接。一旦建立了 TCP 连接,客户端和服务器就会初始化 SSL 层,对加密参数进行沟通,并交换密钥。握手完成后,SSL 的初始化就完成了,客户端就可以将请求报文发送给安全层对其进行加密,接着发送给 TCP 进行发送。
HTTP 缺点
无连接: HTTP/1.1 之前每次请求都要通过 TCP 建立连接断开连接,HTTP/1.1 实现了持久连接
无状态: Cookie 技术和持久连接解决
明文传输: 不安全
HTTPS 特点
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 身份认证:通过认证机构的证书进行数字签名
- 完整性:通过摘要算法防止内容篡改
常见的面试题
HTTP 与 HTTPS 的区别?
- HTTPS 协议握手阶段比较耗时。
- HTTPS 协议要申请证书到 CA(认证机构),需要一定经济成本。HTTP 不需要。
- HTTP 明文传输,不安全。HTTP 加上 SSL 层,更加安全
HTTPS 传输过程?
客户端发起 HTTPS 请求,服务端返回证书,客户端对证书验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
为什么需要证书?
防止中间人攻击,验证服务器身份
如何防止篡改?
证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配。
参考链接
- 《HTTP 权威指南》14.7
- http 和 https 有何区别?如何灵活使用? - 程序员 cxuan 的回答 - 知乎
- HTTPS 详解及常见面试题