认识
一、认识
HTTP
是超文本传输协议, 通信端口为 80
, 通信过程为 DNS 解析 -> TCP 连接 -> 传输数据
, 中间没有任何安全传输相关的模块。HTTPS
是超文本传输安全协议, 通信端口为 443
, 通信过程为 DNS 解析 -> TCP 连接 -> SSL / TLS 连接 -> 传输数据
, TLS
相对于 SSL
更安全。其作用为: 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全、对网站服务器进行真实身份认证。
https
通过数字证书验证服务器是否为信任的服务器, 采用非对称加密的方式交换密钥,然后使用对称加密的方式对数据进行加密,并且对消息的内容采用摘要算法得到消息摘要,这样对端在解密数据后可以通过相同的消息摘要算法对计算后的消息摘要和传过来的消息摘要进行对比,从而判断数据是否经过篡改。
1.1 SSL
如图,TLS
是 SSL
的升级版,而且 TLS1.2
版本以下都已废弃,目前主要用的是**TLS 1.2
** 和 TLS 1.3
。而 OpenSSL
则是开源版本的
浏览器和服务器通信之前,会先协商,选出他们都支持的加密套件,用于实现安全的通信。加密套件的命名格式为:
如最后一个组合,意味着:
-
ECDHE
: 握手时,使用ECDHE
算法交换密钥; -
ECDSA
: 使用ECDSA
算法进行签名; -
AES128-GCM
: 使用AES256
对称加密算法进行通信,密钥长度128
,分组模式GCM
; -
SHA256
: 使用SHA256
算法进行消息的完整性验证和产生随机数。
1.2 TLS
如图,TLS
是 SSL
的升级版,而且 TLS1.2
版本以下都已废弃,目前主要用的是**TLS 1.2
** 和 TLS 1.3
。而 OpenSSL
则是开源版本的
浏览器和服务器通信之前,会先协商,选出他们都支持的加密套件,用于实现安全的通信。加密套件的命名格式为:
如最后一个组合,意味着:
-
ECDHE
: 握手时,使用ECDHE
算法交换密钥; -
ECDSA
: 使用ECDSA
算法进行签名; -
AES128-GCM
: 使用AES256
对称加密算法进行通信,密钥长度128
,分组模式GCM
; -
SHA256
: 使用SHA256
算法进行消息的完整性验证和产生随机数。
二、特点
2.1 优点
-
内容加密,中间无法查看原始内容
-
身份认证,保证用户访问正确。如访问百度,即使
DNS
被劫持到第三方站点,也会提醒用户没有访问百度服务,可能被劫持 -
数据完整性,防止内容被第三方冒充或篡改
-
虽然不是绝对安全,但是现行架构下最安全的解决文案了,大大增加了中间人的攻击成本
2.2 缺点
-
要钱,功能越强大的证书费用越贵
-
证书需要绑定
IP
,不能在同一个IP
上绑定多个域名 -
https
双方加解密,耗费更多服务器资源 -
https
握手更耗时,降低一定用户访问速度(优化好就不是缺点了)
三、问题
3.1 HTTP 与 HTTPS 的区别
HTTP
是超文本传输协议, 通信端口为 80
, 通信过程为 DNS 解析 -> TCP 连接 -> 传输数据
, 中间没有任何安全传输相关的模块。HTTPS
是超文本传输安全协议, 通信端口为 443
, 通信过程为 DNS 解析 -> TCP 连接 -> SSL / TLS 连接 -> 传输数据
, TLS
相对于 SSL
更安全。其作用为: 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全、对网站服务器进行真实身份认证。