`NET::ERR_CERT_INVALID`是访问国密证书网站时常见的浏览器错误。由于国密(SM2/SM3/SM4)是一套与国际TLS/SSL(如RSA)完全不同的密码体系,浏览器和服务器需要专门的配置才能支持。

这个错误的核心原因是浏览器无法验证您网站证书的有效性。具体来说,可以从以下四个方向进行排查:

一、核心排查方向

1.  服务器配置:是否真的“认识”国密证书?

普通的Nginx、Apache是不支持国密算法的。

      检查国密模块:确认服务器软件(如Nginx)是否编译安装了国密版OpenSSL(如GmSSL、铜锁/Tongsuo)。

      验证证书链顺序:国密证书链必须严格按“服务器证书  →  中间证书  →  根证书”的顺序拼接。顺序错误会导致握手失败。可使用`openssl`命令检查证书链顺序。

      确认密钥匹配:确保配置的私钥(`.key`文件)与服务器证书(`.crt`或`.pem`文件)是匹配的。

2.  浏览器信任:根证书到位了吗?

这是最常见的原因。国际主流浏览器(Chrome、Firefox等)默认不信任国密根证书。

      使用国密浏览器:这是最简单的解决方案,推荐使用360安全浏览器、红莲花浏览器等内置国密支持的产品。

      手动导入根证书:如果必须使用Chrome/Firefox,需要手动将国密CA的根证书导入到浏览器的“受信任的根证书颁发机构”列表中。

3.  证书本身:证书文件有问题吗?

      检查证书有效性:确保证书没有过期,且域名完全匹配(包括`www`)。

      检查证书链完整性:确认服务器上部署了完整的证书链(包含中间证书)。可通过SSL检测工具验证。

      核实签发机构:确认证书是由国家认可的国密CA机构签发。

4.  客户端环境:系统时间对吗?

证书的有效期验证依赖准确的系统时间。

      校准系统时钟:确保客户端(访问者的电脑)和服务器端的系统日期和时间都是准确的。时间偏差过大,浏览器会直接判定证书无效。

二、排查工具箱

工具/方法      用途      关键命令/步骤  

GMSSL  s_client          模拟国密SSL握手,排查服务器端问题    `gmssl  s_client  -connect  your-domain.com:443  -cipher  ECDHE-SM2-SM4-CBC-SM3`  

OpenSSL          检查证书文件细节和证书链顺序      `openssl  x509  -in  server.crt  -text  -noout`  

浏览器开发者工具          查看证书详情和安全连接信息      点击地址栏的“锁”图标  ->  “证书”  

在线SSL检测工具          从外部检测证书状态、链完整性和协议支持      搜索“SSL证书检测”等关键词  

三、总结与建议

总的来说,排查“NET::ERR_CERT_INVALID”错误,建议按以下路径快速推进:

1.    优先尝试用国密浏览器(如360安全浏览器)访问。如果能正常打开,问题就出在Chrome等国际浏览器上,核心是根证书未被信任。

2.    如果国密浏览器也报错,则问题大概率在服务器配置上。重点检查Web服务器是否支持国密,以及证书链的顺序和完整性。

3.    使用  `gmssl  s_client`  命令从服务器端进行握手测试,这是定位服务端问题的有效手段。

4.    最后,不要忘记检查那些看似简单但致命的问题:证书是否过期和系统时间是否准确。

对于政企等对兼容性要求高的场景,建议采用SM2+RSA双证书部署方案,让国密浏览器用SM2证书,国际浏览器用RSA证书,实现最佳兼容。