youyichannel

📌志于道,据于德,依于仁,游于艺!

0%

HTTPS 解决了哪些问题?

HTTPS 可不是 HTTP 的复数形式哈🤣,HTTPS 是在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,那有了什么提升呢?

HTTPS 和 HTTP 有什么区别呢?

1)HTTP 是超文本传输协议,信息是明文传输,存在安全风险问题;HTTPS 解决了 HTTP 的安全风险,在 TCP 和 HTTP 层之间加入了 SSL/TLS 安全协议,使得报文可以加密传输;

2)HTTP 连接建立相对简单,TCP 三次握手之后便可以进行 HTTP 报文传输;HTTPS 则需要在 TCP 三次握手之后再进行 SSL/TLS 的握手协议,才能够进入安全的加密报文传输过程;

3)二者默认端口不一样,HTTP 默认端口是 80,HTTPS 默认端口是 443;

4)HTTPS 协议需要向 CA 申请数字证书,来保证 Server 是可信的。

HTTPS 解决了 HTTP 的哪些问题?

HTTP 存在的安全风险

由于 HTTP 是明文传输,会存在一定的安全风险:窃听篡改冒充

HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决上述风险:

  • 信息加密:交互信息无法被窃取,需要解密;
  • 校验机制:无法篡改通信内容;
  • 身份证书:证明 Server 身份的凭证。

HTTPS 解决方案

混合加密

HTTPS 通过混合加密的方式可以保证信息的机密性,解决窃听的风险:

  • 在通信建立前采用非对称加密的方式交换「会话密钥」;
  • 在通信过程中采用对称加密的方式加密明文数据。

采用「混合加密」方式的原因:

  • 对称加密只使用一个密钥,运算速度快,但是密钥必须保密,无法做到安全的密钥交换;
  • 非对称加密使用公私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题,但是速度较慢。

摘要算法 + 数字签名

为了保证传输的内容不被篡改,计算机中会使用摘要算法计算出内容的哈希值,这个哈希值是唯一且单向的。通过哈希算法可以确保内容不会被篡改,但是并不能够保证「内容+哈希值」不会被替换,因为此处缺少对消息来源的证明

为了避免这种情况,HTTPS 采用非对称加密算法解决,该算法有两个密钥,公钥和私钥,这两个密钥可以双向加解密

  • 公钥加密,私钥解密,目的是为了保证内容传输的安全
  • 私钥加密,公钥解密,目的是为了保证消息不会被冒充

一般不会采用非对称加密算法来加密实际的传输内容,因为非对称加密的计算比较耗费性能。非对称加密的用途主要在于通过「私钥加密,公钥解密」的方式确认消息来源的身份。

「数字签名算法」

数字证书

现在可以通过摘要算法来保证消息的完整性,可以通过数字签名来确保消息来源的可靠性,即能够确定消息是由持有私钥的一方发送的。但是还缺少一个身份验证的环节,不排除公钥是被伪造的可能。

因此此时需要一个第三方机构来证明公钥是合法的,计算机的世界里,这个机构就是 CA,CA 将服务器公钥放在数字证书中颁发给服务器,服务器将这个证书一并发送给客户端,只要证书是可信的,公钥就是可信的。

通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。

为什么使用了 HTTPS,还是显示不安全连接?

问题描述:配置好 HTTPS 后,访问网站,仍然出现连接并提示不安全。

问题原因:

1)访问的域名与证书的域名不一致;

2)网站内使用了非 HTTPS 素材,包括图片、css文件、js文件等;

3)SSL 证书过期;

4)浏览器缓存过多;

5)网站接入了 Web 应用防火墙(WAF),WAF 中网站绑定的证书未更新。

参考:[部署了SSL证书后,为什么网站仍然提示不安全?](