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证书后,为什么网站仍然提示不安全?](