定义
超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
产生的原因
HTTPS 是相对于 HTTP 而产生的, 因为 HTTP 的不安全导致了它的诞生,简单来说,主要体现在以下三个方面:
- 内容加密:客户端到服务器的内容都是以加密形式传输,中间者无法直接查看明文内容;HTTP 在传输过程中是明文传输的,内容没有加密,容易被中间者拦截。
- 身份认证:通过校验保证客户端访问的是自己的服务器;HTTP
- 数据完整性:防止内容被第三方冒充或者篡改。
说白了,HTTPS 就是对传输的数据进行了加密,确保了即使被拦截也不会泄密。
加密方式
HTTPS结合了对称和非对称两种加密方式。
- 对称加密:加密传输的内容
- 非对称加:加密对称加密算法的密钥
所以整个过程就是:
- 客户端发送 client_hello,包含一个随机数 random1;
- 服务端回复 server_hello,包含一个随机数 random2,携带了证书公钥 P;
- 客户端接收到 random2 之后就能够生成 premaster_secrect (对称加密的密钥)以及 master_secrect(用premaster_secret加密后的数据);
- 客户端使用证书公钥 P 将 premaster_secrect 加密后发送给服务器 (用公钥P对premaster_secret加密);
- 服务端使用私钥解密得到 premaster_secrect。又由于服务端之前就收到了随机数 1,所以服务端根据相同的生成算法,在相同的输入参数下,求出了相同的 master secrect。
可以看到,传输数据用的密钥,是通过非对称加密的方式进行传输的,而传输数据是使用对称加密的方式进行传输,这里对称加密用到的密钥就是上一步获得的。
所以,非对称加密传输的密钥就非常关键了,如何保证这个传输过程不被人监听及劫持就成为了整个传输过程的重要环节。
技术细节
HTTPS的主要作用是在不安全的网络上创建一个安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。
HTTPS的信任基于预先安装在操作系统中的证书颁发机构(CA)。因此,到一个网站的HTTPS连接仅在这些情况下可被信任:
- 浏览器正确地实现了HTTPS且操作系统中安装了正确且受信任的证书颁发机构;
- 证书颁发机构仅信任合法的网站;
- 被访问的网站提供了一个有效的证书,也就是说它是一个由操作系统信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
- 该证书正确地验证了被访问的网站(例如,访问https://example.com时收到了签发给example.com而不是其它域名的证书);
此协议的加密层(SSL/TLS)能够有效地提供认证和高强度的加密。
要使一网络服务器准备好接受HTTPS连接,管理员必须创建一数字证书,并交由证书颁发机构签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书,所以他们可以验证该签名。
- 管理员必须向证书颁发机构申请数字证书,并签名(指定域名),即声明
- 访问的时候,由浏览器去验证证书,即较验
- 通过较验之后,即可开始传输数据
在上述阶段,就完成了非对称加密验证传输密钥的过程。