国密证书在移动端的兼容性测试,核心在于验证证书、算法、终端、应用四者能否协同工作。由于主流移动操作系统(如Android、iOS)原生不支持国密,测试工作需要覆盖从系统底层到应用上层的多个层面。

以下是详细的测试要点清单:

一、操作系统与平台兼容性

      Android:重点测试各主流版本(如Android  7.0以下版本兼容性较差,需特别关注)及国内厂商定制系统(如华为、小米、OPPO等)的兼容性。

      iOS:测试各主流iOS版本,注意其原生网络组件(如`URLSession`)不支持国密,必须依赖应用层SDK实现。

      HarmonyOS:鸿蒙6.0及以上版本原生支持国密TLS,是测试的“友好”平台。需重点测试其证书链验证等原生功能。

      其他操作系统:如有需要,也应覆盖统信UOS、麒麟OS等国产操作系统。

二、浏览器与WebView兼容性

      国产国密浏览器:如360安全浏览器(国密版)、红莲花浏览器等。这类浏览器内置国密根证书,应能完美兼容。

      国际主流浏览器:如Chrome、Firefox、Safari。它们默认不支持国密证书,应测试其访问时能否自动降级到RSA证书(若采用双证书方案)。

      应用内嵌浏览器:如微信/钉钉内置浏览器。需特别关注,例如微信iOS版基于`WKWebView`,仅支持RSA,不识别SM2算法。

      WebView组件:在App内使用WebView加载H5页面时,需测试其国密支持情况,通常取决于系统WebView内核。

三、APP与SDK兼容性

      网络库:测试App使用的网络库(如Android的`OkHttp`、iOS的`AFNetworking`)是否集成了国密SDK,并能正常发起国密HTTPS请求。

      国密SDK:测试集成的第三方国密SDK(如GmSSL)在各平台(Android/iOS/HarmonyOS)和CPU架构(如`armeabi-v7a`,  `arm64-v8a`)上的稳定运行。

      小程序:若涉及微信、支付宝等小程序,需测试其国密算法的支持情况。

四、证书与算法兼容性

      证书格式:测试常见格式(如PEM、DER)的解析是否正常。

      证书链验证:确保服务器下发的完整证书链(根→中级→站点证书)在客户端能被正确验证。

      证书吊销检查:测试客户端能否通过CRL(证书吊销列表)或OCSP(在线证书状态协议)正确查询证书状态。

      算法套件:重点测试`TLS_SM2_WITH_SM4_SM3`等国密套件的协商与使用。

      根证书:测试设备是否已预置必要的国密根证书,或App能否动态导入。

      双证书方案:若采用SM2/RSA双证书,需测试服务器能否根据客户端特性自动返回正确的证书。

五、网络协议与握手兼容性

      协议版本:确认服务器支持国密TLCP协议(GM/TLS)。同时,需确保TLS  1.2及以下版本能正常协商。

      TLS握手:监控完整的国密TLS握手过程,确保`ClientHello`等各阶段无误。

      加密套件协商:测试客户端与服务器能否成功协商出国密加密套件。

      SNI支持:若服务器使用SNI(服务器名称指示),需测试国密证书在此场景下的兼容性。

      会话恢复:测试TLS会话恢复机制(Session  Resumption)在国密环境下的功能。

六、功能与性能测试

      基础功能:确保使用国密证书后,HTTPS页面能正常加载,API能正常调用,无报错。

      性能表现:SM2算法运算资源占用约为RSA的1/10,可在低端设备上进行对比测试验证。

      异常场景:模拟证书过期、证书域名不匹配、根证书未安装等情况,验证客户端是否能给出友好提示。

七、兼容性问题解决方案

      采用双证书方案:这是目前最成熟的方案。服务器同时部署国密SM2和国际RSA证书,根据客户端自动适配,可保证广泛兼容性。

      应用层集成SDK:对于无法改造的系统,在App内集成国密SDK,在应用层实现国密通信。

      预置根证书:对于企业级App,可通过MDM等手段,在设备上预置信任的国密根证书。

八、总结

国密证书的移动端兼容性测试是一个系统性工程,不能仅依赖单一工具或场景。建议制定详细的测试计划,覆盖主流的操作系统、设备型号、App场景,并重点验证双证书方案的可用性,以确保业务平稳、安全地运行。