双证书兼容性测试的目标,是确保服务端能同时为国密(SM2)浏览器和国际(RSA/ECC)浏览器提供正确的SSL/TLS证书,从而实现无缝、安全的访问体验。
核心在于服务端部署SM2和RSA两套证书,并通过智能适配技术自动为不同客户端提供匹配的证书。针对两种浏览器能否都正常访问,首先要确保服务端的双证书都正确部署,以通过自动化扫描检测,再分别检查国密浏览器与 RPC 客户端的访问验证。
一、测试准备与环境构建
准备测试设备与网络:准备一台配置好双证书的服务器和一台或多台用于测试的客户端电脑。
准备各类型浏览器:
国密浏览器:如360安全浏览器(国密专版)、奇安信可信浏览器、红莲花浏览器等。
国际浏览器:如Chrome、Firefox、Edge、Safari等。
获取测试工具:
自动化接口测试工具:Postman、curl、或专用脚本(如Python + `requests`)。
在线检测服务:SSL Labs、MySSL.com 等。
准备国密根证书:用于手动安装到国际浏览器以建立信任。
正确配置服务端:确保服务器同时配置了RSA证书和SM2签名/加密双证书。部署在`Nginx`上通常需要通过国密模块重新编译。
配置智能适配规则:服务端需能识别客户端User-Agent或其他特征,自动匹配对应证书。
准备网络抓包工具:例如 Wireshark,用于深度分析TLS握手过程。
域名解析检查:确保测试域名已正确解析到服务器IP。
测试执行与验证
建议按以下功能点逐一测试,覆盖国密浏览器、国际浏览器和RPC接口三大场景。
测试场景 功能点 预期结果 通过标准
国密浏览器 基础访问 正常打开HTTPS页面,无安全警告。 页面加载成功,地址栏显示安全锁标识。 证书查看 查看证书详情,显示为SM2算法,签名算法为国密。 确保证书算法与签名算法为国密体系。
加密套件 页面加载后,TLS加密套件为国密套件(如 `ECC-SM4-SM3`)。 在开发者工具的“安全”标签页检查。
标识显示 地址栏显示“GM”图标或“国密”字样。 不同浏览器标识可能不同。
国际浏览器 基础访问 正常打开HTTPS页面,无安全警告。 页面加载成功,地址栏显示安全锁标识。 证书查看 查看证书详情,显示为RSA/ECC算法。 确保证书算法为RSA或ECC。
加密套件 页面加载后,TLS加密套件为标准国际套件(如 `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`)。 在开发者工具的“安全”标签页检查。
RPC/脚本客户端 使用`curl`请求 `curl -v https://your-domain.com` 命令成功返回页面内容,并在输出中看到TLS握手成功的证书信息。 返回状态码200,无证书错误。
使用`requests`库请求 `requests.get('https://your-domain.com', verify='/path/to/ca-bundle.crt')` 成功。 返回状态码200,无SSL异常。
自动化扫描 证书链检查 在线服务报告RSA和SM2证书链均完整、可信。 无证书链断裂或不可信警告。
协议与算法支持 扫描结果支持TLS 1.2/1.3及配置的加密套件。 符合TLS最佳实践配置要求。
二、常见问题与解决方案
测试中可能会遇到各种问题,可参考此表应对:
问题现象 可能原因 解决方案
国际浏览器访问时出现“证书不受信任” 1. 服务器未正确配置RSA证书;<br>2. 智能适配规则失效,错误地向国际浏览器提供了SM2证书。 1. 检查并确认服务器RSA证书配置正确;<br>2. 排查Nginx或负载均衡器的适配规则逻辑。
国密浏览器访问时使用RSA证书 1. 服务器未正确配置国密证书;<br>2. 智能适配规则未能识别国密浏览器请求。 1. 检查国密证书(签名+加密)是否正确部署;<br>2. 优化智能适配规则,确保能准确识别国密浏览器User-Agent。
浏览器访问时提示证书链不完整 服务器配置的证书链不完整,缺少中间证书。 | 在服务器配置中,确保证书文件包含了完整的证书链(网站证书+中间证书)。
Chrome/Firefox访问国密测试站提示不安全 浏览器不信任国密根证书。 1. 手动将国密根证书导入操作系统或浏览器的信任存储区;<br>2. 或在Chrome中启用 `#enable-gmssl` 实验性标志。
Nginx启动时报错无法加载证书 1. 证书文件路径错误或权限不足;<br>2. 证书文件格式不正确。 1. 检查路径和权限;<br>2. 确保证书和私钥文件为PEM格式。
老旧系统无法访问 旧系统(如Windows XP/7)可能缺少必要的补丁(如SHA-2补丁)或TLS版本支持。 为旧系统安装必要的系统补丁,或在浏览器设置中启用TLS 1.1/1.2协议。
国密浏览器无法识别加密Key 浏览器缺少必要的注册表项来调用SKF接口。 参考文档添加正确的注册表项,指向SKF驱动dll路径。
360国密浏览器未自动信任根证书 缺少CTL文件。 生成并配置ctl.dat文件供浏览器读取。
部分国密浏览器地址栏无“GM”标识 浏览器厂商未实现此UI标识。 通过证书详情页确认为国密算法即可。
三、测试报告与关注重点
测试报告产出
测试用例:按上述功能点逐项列明。
执行记录:详细记录每一步测试操作及对应的结果截图或日志。
缺陷列表:清晰描述问题现象、重现步骤、严重等级及预期结果。
结论建议:总结整体兼容性表现,并针对遗留问题提出后续改进建议。
⭐ 核心关注重点
双证书配置:确保服务端正确配置并加载RSA和SM2两套证书。
智能切换机制:验证服务端能否根据客户端类型,自动选择正确的证书进行TLS握手。
国密协议支持:服务端需支持国密TLCP协议及`ECC-SM4-SM3`等加密套件。
信任链完整性:确保客户端(尤其是国际浏览器)能通过手动或自动方式信任国密根证书。
降级兼容性:测试当国密协商失败时,是否能无缝回退至国际算法。
性能基准测试:测试双证书部署可能带来的性能损耗。
周期性监控:持续追踪双证书的到期时间和吊销状态。
用户在部署或测试时遇到具体的报错信息,可以描述一下具体的报错现象,我来帮你进一步排查原因。