用户在安装国密SSL证书时,发现与常规RSA证书不同,所涉及算法支持、双证书体系、专用浏览器等多个特殊环节。下面是一份几分钟可完成的环境检查清单,按检查顺序排列。
一、端口与网络检查(30秒)
确保443端口已开放:在服务器操作系统防火墙和安全组(云平台安全组规则)中放行443端口。这是HTTPS服务的标准端口,未开放会导致证书安装后无法启用HTTPS。
确认公网IP与域名解析匹配:通过拨测工具确认域名的A记录解析指向当前服务器的公网IP。
检查ICP备案状态(中国内地服务器):确保域名已完成工信部ICP备案,未备案的域名无法正常提供Web服务。
二、证书文件检查(1分钟)
证书状态确认为“已签发”:登录CA机构控制台,确认目标证书状态为“已签发”,而非“待验证”或“已过期”。
下载完整的证书文件包:国密SSL证书通常包含以下文件,缺一不可:
签名证书(`xxx_sign.crt` / `xxx_sign_bundle.pem`)
签名私钥(`xxx_sign.key`)
加密证书(`xxx_encrypt.crt` / `xxx_encrypt_bundle.pem`)
加密私钥(`xxx_encrypt.key`)
验证证书文件完整性:使用 `gmssl x509 -in 证书文件.pem -text` 查看证书详情,确认颁发者为国密CA、签名算法为 `sm3WithSM2`、密钥长度为256位。
确认域名匹配:证书绑定的域名必须与实际访问域名完全一致。通配符证书(如`*.example.com`)仅对一级子域名生效,不覆盖多级子域名。
三、服务器环境检查(2分钟)
确认操作系统与Web服务器支持国密:国密SSL证书目前主要支持Linux环境下的Nginx和Apache,Windows Server需使用国密专用版Nginx。
确认Nginx/Apache为国密版本:官方版Nginx和Apache默认不支持国密算法,必须使用编译了国密模块的版本(如含gmssl_openssl的Nginx),否则配置国密证书后会报错。
检查编译依赖是否齐全:若需自行编译国密版Web服务器,确保已安装gcc、gcc-c++、pcre-devel、zlib-devel等编译工具。
确认服务器已安装远程管理工具:准备WinSCP(文件上传)和PuTTY/Xshell(远程登录)等工具,确保证书文件能够顺利上传至服务器。
四、客户端/浏览器检查(1分钟)
准备国密浏览器:普通Chrome、Firefox默认不兼容国密SSL证书。需使用360国密浏览器、红莲花国密浏览器、密信浏览器或零信浏览器进行访问测试。
确认根证书已预埋或手动导入:根证书须预置于国密浏览器的信任库中;若访问时提示“证书不受信任”,需手动将CA根证书导入浏览器或系统信任库。
验证浏览器国密支持:使用360国密版或红莲花浏览器访问目标域名,检查地址栏是否显示绿色锁图标,点击锁图标查看证书详情中是否包含SM2算法标识和国密CA颁发机构信息。
五、配置文件与密码套件检查(30秒)
确认国密密码套件已配置:在Nginx/Apache配置中指定国密密码套件,例如:
ssl_ciphers ECC-SM2-SM4-CBC-SM3:ECDHE-SM2-SM4-GCM-SM3;
密码套件需包含SM2/SM3/SM4算法标识。
检查双证书配置(如适用) :若需同时兼容国际浏览器,需配置SM2/RSA双证书方案。在Nginx配置中同时指定签名证书和加密证书两对密钥。
六、快速验证命令(30秒)
环境检查完成后,可运行以下命令快速验证国密HTTPS连接是否就绪:
使用gmssl测试国密握手:
bash
gmssl s_client -connect 域名:443 -cipher ECC-SM2-SM4-CBC-SM3
成功连接会显示 `Protocol: GMSSL` 和国密加密套件信息。
使用curl测试:
bash
curl -k --tlsv1.2 --ciphers ECC-SM2-SM4-CBC-SM3 https://域名
常见坑点提醒
坑点 后果 解决办法
使用官方版Nginx/Apache 配置国密证书后报错 必须使用编译了国密模块的版本
未开启443端口(含安全组) HTTPS无法访问 操作系统防火墙 + 云安全组双向放行
用Chrome/Firefox测试国密 提示“证书不受信任” 改用360国密版、红莲花等国密浏览器
只配置了签名证书,缺少加密证书 国密握手失败 双证书(签名+加密)必须同时配置
域名与证书绑定的域名不匹配 浏览器安全警告 确认证书域名覆盖当前访问域名
根证书未预埋/未导入 浏览器提示不安全 手动导入国密根证书到系统信任库
上面清单逐项确认后,即可进入正式的SSL证书安装步骤。建议在正式部署前先在测试环境中完整走一遍流程。