在双证书部署中,当SM2证书出现异常时自动降级至RSA,是确保业务连续性和兼容性的自适应降级机制。其核心是“能国密则国密,不能则RSA”,旨在国密合规与用户体验间取得平衡。
一、触发条件:何时会触发降级?
该机制主要在以下情况被激活:
SM2证书本身异常:证书过期、被吊销、与域名不匹配等。
客户端不支持国密:用户使用Chrome、Firefox、Safari等主流浏览器,它们默认不支持SM2算法。
国密握手失败:因网络或配置问题,导致TLS握手阶段的国密协议协商失败。
性能策略(较少见):当SM2算法计算负载过高,可能影响服务性能时,系统也可能主动切换至RSA。
二、技术实现:如何做到“自动”?
自动降级依赖特定的技术架构和协商流程:
1. 基础条件:双证书部署
服务器需同时配置并加载SM2和RSA两套证书。这要求Web服务器(如Nginx、Apache)或其底层OpenSSL库(如铜锁/Tongsuo、GmSSL)支持国密算法。
2. 核心机制:协议协商
在TLS握手阶段,通过ALPN(应用层协议协商)扩展实现智能选择。客户端会在握手时告知服务器自己支持的协议列表(如`http/1.1`或`sm2-http/1.1`),服务器根据此信息选择对应的证书。
三、关键注意事项
客户端识别:自动降级依赖客户端的正确“宣告”。国密浏览器(如红莲花、密信浏览器、360国密版等)会在握手时声明支持国密协议,从而优先使用SM2证书。
服务端软件:标准的Nginx或Apache无法直接支持国密双证书。需要重新编译,集成支持国密的OpenSSL分支(如铜锁/Tongsuo)或使用其衍生版(如Tengine)。
证书有效性:务必确保SM2和RSA证书均在有效期内且正确部署,否则自动降级可能无法按预期工作。
总而言之,这套机制通过在服务端同时部署两套证书,并结合客户端的协议协商能力,实现了在SM2证书异常或客户端不兼容时,自动、无缝地切换至RSA证书,从而保障了业务的连续性和广泛兼容性。