验证Nginx国密证书配置是否正确,可以从服务端检查和客户端访问两个层面进行。
一、服务端配置与状态检查
在服务器上,可以通过以下步骤进行验证:
1. 检查Nginx配置文件:确保配置文件语法正确且包含了正确的国密证书路径。
执行 `nginx -t` 测试配置文件语法。若显示 `syntax is ok` 和 `test is successful`,则配置基本无误。
打开Nginx配置文件(如 `nginx.conf`),确认 `ssl_certificate` 和 `ssl_certificate_key` 指令指向了正确的国密证书(`.crt`/`.pem`)和私钥(`.key`)文件路径。
关键点:国密双证书体系包含签名证书和加密证书,配置时需确保两者都正确引入。
2. 检查Nginx进程和端口:确认Nginx服务正常运行,并监听了443端口。
执行 `ps aux | grep nginx` 检查Nginx进程是否存在。
执行 `netstat -tlnp | grep 443` 或 `ss -tlnp | grep 443` 检查443端口是否已被Nginx监听。
3. 查看Nginx错误日志:Nginx的错误日志是排查问题的关键。
执行 `tail -f /var/log/nginx/error.log` 实时查看日志。
若日志中出现 `SSL_CTX_use_PrivateKey failed` 等错误,通常表示证书和私钥不匹配。
二、使用国密版OpenSSL工具验证
官方OpenSSL不支持国密算法,需使用国密版OpenSSL(如`gmssl`)进行验证。
bash
使用gmssl测试与服务器的SSL连接
gmssl s_client -connect your_domain.com:443 -CAfile /path/to/ca_bundle.crt -sigalgs SM2-SM3
如果连接成功,会显示证书链和SSL握手信息。此命令可有效验证服务端是否支持并正确配置了国密算法。
三 、客户端浏览器访问测试
由于国密算法的特殊性,需要使用支持国密标准的浏览器进行访问测试。
国密浏览器测试:在密信浏览器、红莲花浏览器等国密浏览器中,访问 `https://your_domain.com`。若地址栏显示安全锁标志,则说明国密证书部署成功。
通用浏览器测试(可选):如果在Nginx上同时部署了RSA证书(双证书方案),可以在Chrome、Firefox等通用浏览器中访问,测试其兼容性。
四、常见问题排查
如果验证失败,可从以下几点入手排查:
确认Nginx为国密版本:官方Nginx不支持国密,需使用集成了国密模块(如`gmssl`)的版本。
确保证书链完整:确保Nginx配置中包含了完整的证书链(服务器证书+中间CA证书)。
检查证书与域名匹配:确认部署的证书与当前访问的域名完全一致。
检查443端口连通性:确保服务器防火墙和安全组已放行443端口。
核对算法和密钥用法:确认证书签名算法为`sm2-with-sm3`,且签名证书包含“数字签名”、加密证书包含“密钥加密”的密钥用法。
如果问题依旧,建议查阅Nginx错误日志获取更具体的错误信息,或联系证书厂商的技术支持。