1. 基本概念
- 数字签名:在非对称加密下,通过私钥加密(加密内容不是数据本身,而是数据的哈希值),公钥解密来验证对方身份;
预览
- 数字证书:CA利用其私钥对服务器公钥生成数字签名,服务器将
个人信息 + 公钥 + 数字签名
的打包的结果就叫数字证书; - 数字证书有限性验证:客户端在收到数字证书后,利用CA公钥解析出数字证书中数字签名,然后对数字证书中公钥进行计算HASH值,如果和解析的数字证书中数字签名中结果相同,则说明结果可信;
预览
2. SSL/TLS连接建立过程
HTTPS
主要基于SSL/TLS
协议,确保了数据传输的安全性和完整性, 其建立连接并传输数据的基本过程如下:
- 客户端向服务器索要并验证服务器的公钥。 - 双方协商生产`会话秘钥`。 - 双方采用`会话秘钥`进行加密通信。
SSL/TLS协议建立详细流程:
1)客户端发起连接请求
客户端(通常是浏览器)向服务器发送一个 ClientHello 消息,包含了以下内容:
- 支持的 SSL/TLS 版本
- 支持的加密算法(如对称加密、哈希算法等)
- 生成的随机数,用于后续加密操作
2)服务器回应
服务器收到客户端的请求后,选择一个合适的加密协议和算法,生成一个 ServerHello 消息,并返回以下内容:
- 选择的 SSL/TLS 版本
- 选择的加密算法
- 服务器生成的随机数
- 服务器的数字证书(含公钥)
3) 证书验证
客户端会验证服务器提供的 数字证书,通过以下步骤确保服务器身份:
- 客户端检查证书是否由受信任的 证书颁发机构(CA)签发。
- 客户端检查证书是否有效(包括证书的有效期,是否被吊销等)。
- 客户端检查证书中的公钥是否正确。
4) 密钥交换
客户端和服务器在完成证书验证后,会开始密钥交换过程。这个过程使用 非对称加密(公钥和私钥)和 对称加密(会话密钥)来保护数据:
- 客户端使用 服务器的公钥 加密生成一个 共享的对称密钥(会话密钥),并发送给服务器。
- 服务器使用 自己的私钥 解密该密钥。
- 这时,客户端和服务器已经共享了一个对称密钥,用于加密后续的通信内容。
5)完成握手
一旦密钥交换完成,客户端和服务器就可以开始使用 对称加密 进行数据的加密传输。双方交换的消息都用共享的会话密钥加密,确保通信的安全性。
3. HTTPS 的性能影响
由于 HTTPS 在数据传输过程中使用了 加密和解密 操作,通常会比 HTTP 稍慢。这是因为:
- 加密过程:每个请求和响应都需要加密和解密,增加了处理时间。
- 证书验证:握手过程中需要验证证书,增加了延迟。
4. HTTPS 性能优化?
- 硬件级别优化:使用在指令级别优化了加密过程的CPU;
- 会话复用:在同一个会话中,客户端和服务器可以重用之前的加密会话,避免重复的握手过程。
- 协议升级:把TLS1.2升级成TLS1.3,TLS1.3大幅度简化了握手的步骤,完成TLS握手只要1RTT,而且安全性更高。
- 证书缓存:浏览器可以缓存证书,避免频繁的证书验证过程。