HTTPS协议 & TLS协议
条评论1. HTTPS协议
1.1 HTTP 和 HTTPS 协议的区别
HTTP 协议存在一定的缺点:
- 通信使用明文,不提供任何方式的数据加密,内容可能被窃听(重要密码泄露)
- 不验证通信方身份,有可能遭遇伪装(跨站点请求伪造)
- 无法证明报文的完整性,有可能已遭篡改(运营商劫持)
为了解决 HTTP 存在的这些漏洞使数据传输更加安全,引入了另一种协议 HTTPS,HTTPS 协议是在 HTTP 协议的基础上加入了加密处理和认证机制和完整性保护,只是 HTTP 通信接口部分用 SSL/TLS 协议代替而已,简单讲就是 HTTP 的安全版,通常 HTTP 直接和 TCP 通信,当使用 SSL 时,就演变成先与 SSL 通信,再由 SSL 和 TCP 通信。
HTTP 和 HTTPS 的区别:
- HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;
- HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是安全性的 SSL 加密传输协议;
- HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口不一样,前者是 80,后者是 443;
HTTP 的连接很简单,是无状态的,HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
1.2 HTTPS 的工作原理
客户用 HTTPS 的 URL 访问 Web 服务器,要求与 Web 服务器建立 SSL 连接;
Web 服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端;
客户端的浏览器与 Web 服务器开始协商 SSL 连接的安全等级,也就是信息加密的等级;
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站;
Web 服务器利用自己的私钥解密出会话密钥;
Web 服务器利用会话密钥加密与客户端之间的通信;
2. TLS 协议
SSL/TLS 是保护计算机网络通讯安全的一类加密协议,它们在传输层上给原先非安全的应用层协议提供加密保护,如非安全的 HTTP 协议即可被 SSL/TLS 保护形成安全的 HTTPS 协议。
TLS 可以理解为 SSL(Secure Socket Layer)安全套接字层的后续版本,TLS 协议是继承了 SSL 协议并写入 RFC 标准化后的产物。
SSL (Secure Socket Layer)安全套接字层协议
SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
分为SSL记录协议和SSL握手协议。
TLS(Transport Layer Security)传输层安全协议
- 用于两个应用程序之间提供保密性和数据完整性。
分为TLS记录协议和TLS握手协议。
2.1 TLS 通信握手过程
- 客户端给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法列表;
- 服务器从算法列表中选择一种加密算法确认双方使用的加密方法,并给出包含服务器公钥的数字证书、以及一个服务器生成的随机数(Server random);
- 客户端确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥加密这个随机数,将加密后的信息发给服务器;
- 服务器使用自己的私钥,获取客户端发来的随机数(即Premaster secret);
- 客户端和服务器根据约定的加密方法,使用前面的三个随机数,生成「对话密钥」(session key),用来加密接下来的整个对话过程。
握手阶段有三点需要注意:
- 「对话密钥」由前面提到的三个随机数一起组成。
- 握手之后的对话使用「对话密钥」加密,属于对称加密;服务器的公钥和私钥只用于加密和解密「对话密钥」,为非对称加密。
- 服务器的公钥放在服务器的数字证书之中,只要证书是可信的公钥就是可信的,保证了公钥不被篡改。
- 每一次对话(session),客户端和服务器端都生成一个「对话密钥」(session key),用它来加密信息。由于”对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密”对话密钥”本身,这样就减少了加密运算的消耗时间。
参考
- 本文链接:HTTPS协议 & TLS协议
- 发布时间:2019年10月11日 - 19:22:47
- 更新时间:2021年02月03日 - 6:56:56
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
分享