验证国密证书的加密套件是否生效,可以从浏览器和命令行两个主要途径入手,由浅入深进行排查。

方法一:浏览器直观验证(最快捷)

这是最直接的验证方式,但前提是必须使用支持国密算法的浏览器,例如密信浏览器、红莲花浏览器、360国密浏览器等。普通浏览器(如Chrome、Firefox)默认不支持国密协议,无法建立国密连接。

1.    访问网站:使用国密浏览器访问你的网站。

2.    查看地址栏:如果连接成功,地址栏通常会显示一个安全锁图标。

3.    查看证书详情:点击地址栏的锁形图标,选择“证书”或“查看证书”。在证书的“详细信息”中,检查以下关键信息:

              算法标识:应包含  `SM2`  算法标识。

              签名算法:应显示为  `SM3WithSM2`  或类似格式。

              颁发机构:应为国密CA,例如GDCA、CFCA等。

方法二:命令行工具验证(更精确)

使用命令行工具可以更精确地控制连接参数并查看详细的握手信息。

      使用  Gmssl  工具:`gmssl`  是一个国密算法的开源工具箱,可以直接用来测试。

        bash

        gmssl  s_client  -connect  你的域名:443  -cipher  ECC-SM2-SM4-CBC-SM3

          成功标志:若连接成功,输出信息中会显示  `Protocol:  GMSSL`  和协商使用的国密加密套件(如  `ECC-SM2-SM4-CBC-SM3`)。参数  `-cipher`  可以指定一个国密套件来强制测试。

      使用  Openssl  工具(辅助验证):如果你的  `openssl`  版本(如铜锁/Tongsuo)支持国密,也可以用类似方法测试。对于不支持国密的普通  `openssl`,此命令会失败,可从侧面印证服务器未降级到国际算法。

        bash

        openssl  s_client  -connect  你的域名:443  -servername  你的域名

        成功连接后,检查输出的  **`Signature  Algorithm`**  字段是否为  `sm3WithSM2`。

方法三:深度检测与排查

如果以上方法不奏效,可以尝试以下深度检测手段:

      检查服务端日志:在Nginx或Apache的日志中,过滤  `GMSSL`  或  `SM2`  关键字。成功建立国密连接的日志可能包含  `GMSSLv1.2  handshake  completed`  等字样。

      抓包分析:使用  Wireshark  等工具抓取网络包,过滤  `tls.handshake.type  ==  1`(Client  Hello包)。检查  `Cipher  Suites`  列表中是否包含国密套件,例如  `0xE013`  (对应  `ECC-SM2-SM4-CBC-SM3`)。

常见问题与注意事项

      服务器软件需支持国密:官方原版的Nginx或Apache默认不支持国密,需要重新编译并加载国密模块(如`wotrus_ssl`)或使用“国密版”。

      证书信任问题:如果浏览器提示“证书不受信任”,通常是因为未安装国密CA的根证书。需要手动将其导入到浏览器或系统的信任库中。

      理解“加密套件”:国密加密套件通常由SM2(密钥交换/签名)、SM4(对称加密)和SM3(消息摘要)组合而成。验证时,应确认协商的套件属于这一组合。

      双证书部署:许多服务器采用“国密+国际”双证书方案以兼容更多浏览器。验证时需注意,只有国密浏览器才会触发国密证书和套件。

总结

验证国密证书加密套件生效的核心是“国密客户端  +  国密服务端”的正确协商。

      普通用户或快速验证,推荐使用国密浏览器。

      技术人员深度排查,建议使用  `gmssl`  命令行工具。