双证书部署的核心,是让服务器能根据客户端类型,自动选择最合适的加密通道。这个过程对用户完全透明,就像一条智能的“双向车道”,一边是面向全球的国际标准通道,另一边是符合中国合规要求的国密标准通道。
一、国际标准通道握手流程 (以TLS 1.2为例)
当用户使用Chrome、Firefox等国际通用浏览器访问时,会触发此流程。它遵循`RFC 4346`等国际标准,特点是服务器使用一张证书同时完成身份认证和密钥交换。
1. `Client Hello`:客户端发送请求,附带自身支持的加密套件列表和一个随机数(`ClientRandom`)。
2. `Server Hello`:服务器从中选择一组双方都支持的加密套件,并回复自己的随机数(`ServerRandom`)。
3. `Certificate`:服务器发送其唯一的RSA/ECC证书给客户端。
4. `Server Hello Done`:服务器表明初始协商消息已发送完毕。
5. `Client Key Exchange`:客户端验证证书后,生成一个“预备主密钥”(Pre-Master Secret),并用服务器证书中的公钥加密后发送给服务器。
6. `Change Cipher Spec & Finished`:双方使用`ClientRandom`、`ServerRandom`和`Pre-Master Secret`,通过相同算法计算出相同的“主密钥”和“会话密钥”。随后,双方发送`Finished`消息,验证整个握手过程未被篡改,并切换至加密通信。
二、中国密码通道握手流程 (以国密TLCP为例)
当用户使用360国密浏览器、红莲花浏览器等国密浏览器访问时,会触发此流程。它主要遵循`GM/T 0024-2014《SSL VPN技术规范》`,特点是服务器使用两张证书:一张用于签名的签名证书和一张用于加密的加密证书。
1. `Client Hello`:客户端发起请求,表明自己支持国密协议(如TLCP 1.1)和国密套件(如`TLCP_ECC_SM4_GCM_SM3`)。
2. `Server Hello`:服务器选定双方都支持的国密协议版本和加密套件。
3. `Certificate`:服务器同时发送签名证书和加密证书两张SM2证书给客户端。
4. `Server Key Exchange`:服务器使用签名证书的私钥,对密钥交换的关键参数进行签名,以证明身份。
5. 客户端验证:客户端验证两张证书的合法性,并校验`Server Key Exchange`中的签名是否正确。
6. `Client Key Exchange`:客户端生成“预备主密钥”,并使用服务器加密证书的公钥进行加密后发送。
7. 密钥派生:双方基于SM3算法,从预备主密钥和随机数中派生出相同的“主密钥”和“会话密钥”。
8. `Change Cipher Spec & Finished`:与TLS 1.2类似,双方切换至加密通信,并发送`Finished`消息验证握手完整性。
三、核心差异对比
对比维度 🌍 国际标准通道 (TLS 1.2) 🇨🇳 中国密码通道 (国密TLCP)
遵循标准 国际标准 (RFC 4346等) 国家标准 (GM/T 0024-2014)
核心算法 RSA/ECC, AES, SHA系列 SM2, SM4, SM3
证书体系 单证书:一张证书兼具签名和加密功能 双证书:签名证书 + 加密证书,功能分离
密钥交换 RSA/ECDHE 密钥协商 SM2 密钥交换协议 (ECDHE_SM2)
主要目标 全球通用性与兼容性 满足国内合规要求与自主可控
双证书部署方案并非简单的技术叠加,而是一种兼顾合规与兼容的智慧设计。它通过“国际/国密双轨制”,在一套系统中实现了两种安全标准的无缝切换,既满足了国内的密码合规要求,又保障了全球用户的访问体验。