本文介绍如何在 Windows 操作系统的 Nginx 服务器上配置国密标准 SSL 证书,包括下载证书文件、配置 Nginx 参数以及安装后的验证步骤。
本文以 Windows 64 位操作系统、Nginx 1.24.0 国密版(非普通官网下载版本)和沃通 DV 国密 SSL 证书为例进行演示。不同操作系统版本和 Web 服务器的部署操作可能存在差异。
背景信息
国密SSL证书是指根据中国国家密码局制定的密码算法标准所生成的SSL证书,主要用于满足企业对HTTPS协议国产化改造及国密算法应用的合规要求。如果您的Web应用服务器仅部署了国密SSL证书,则只能在支持国密算法的浏览器中访问,如密信浏览器和红莲花浏览器。因此,为了确保与各类浏览器的兼容性,通常会采取SM2/RSA双证书部署方案。
前提条件
操作步骤
步骤一:下载 SSL 证书
步骤二:安装 Nginx 国密版
下载 Nginx Windows 国密版安装包:
Windows 64 位操作系统:Nginx 1.24.0 国密版
Windows 32 位操作系统:Nginx 1.18.0 国密版
请根据服务器操作系统的位数选择对应的安装包。
解压 Nginx 国密版安装包:
选择与服务器操作系统位数匹配的 Nginx 国密版压缩包,将其解压至指定目录,例如
C:\nginx-1.24.0。说明本文以
C:\nginx-1.24.0作为 Nginx 的安装目录演示后续操作。
步骤三:在 Windows 服务器配置 SSL 证书
登录 Windows 服务器。
阿里云服务器:请参考使用Workbench登录Windows实例。
非阿里云服务器:请通过对应厂商提供的远程连接功能登录服务器终端。
开放安全组的 443 端口。
请确保安全组已开放 443 端口 (TCP),否则外部无法访问服务。以下操作以阿里云 ECS 为例:
开放服务器防火墙的 443 端口。
登录Windows服务器,单击左下角开始菜单,打开控制面板。
点击。
如果防火墙处于如下图的关闭状态,无需额外操作。

如果防火墙已开启,请参考以下步骤放行HTTPS规则。
单击左侧,检查是否存在协议为TCP,本地端口为443,操作为阻止的入站规则。
若存在此类规则,需要右键单击相应规则并选择属性,在常规页签,将其修改为允许连接并应用。
上传证书文件到服务器,以下三种方式任选其一即可。
Workbench上传文件
在前面步骤打开的 Workbench 页面中,单击左下角开始菜单,查找并打开名为此电脑、计算机或文件资源管理器的选项。
双击 xxx上的workbench。

从本地拖动之前步骤下载的zip文件至该目录,并右键刷新文件夹。
然后将目标文件从该目录拖动到 C 盘或者其他盘。
重要重新连接、退出实例时,Workbench会自动清除该实例重定向的驱动程序和文件夹中已上传的所有文件信息以节省空间,该目录仅用于文件传输,请不要保存文件。
远程连接工具上传文件
在使用远程桌面连接或Windows App连接实例时,可以直接将下载的证书文件复制粘贴上传至服务器,具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件。
在服务器上下载证书文件
如果您的服务器可以访问公网并登录阿里云控制台,则可以直接在服务器上登录数字证书管理服务控制台进行步骤一的下载。
进入 Nginx 安装目录,在
C:\nginx-1.24.0\conf目录下创建cert目录,用于存放国密标准和国际标准 SSL 证书。cert 目录仅为示例,证书存放目录可以任意命名。
将国密标准证书和国际标准证书文件上传至
C:\nginx-1.24.0\conf\cert目录。说明您可以使用远程登录工具的本地文件上传功能来上传文件。例如PuTTY、Xshell或WinSCP等工具。如果您使用的是阿里云云服务器 ECS,关于上传文件的具体操作,请参见上传或下载文件。
在
C:\nginx-1.24.0\conf\nginx.conf的http区块内添加include ssl.conf;配置,如下所示:http { ... include mimi.types; include ssl.conf; default_type application/octet-stream; ... }配置 ssl.conf 文件。
在
C:\nginx-1.24.0\conf目录下新建ssl.conf文件,添加以下配置。说明以下配置仅供参考,请根据实际情况修改证书路径、证书文件名和域名。
server { listen 443 ssl; server_name yourdomain.com; #配置国密算法签名证书-SM2证书 ssl_certificate C:/nginx-1.24.0/conf/cert/yourdomain.com_sm2_sign.pem; ssl_certificate_key C:/nginx-1.24.0/conf/cert/yourdomain.com_sm2_sign.key; #配置国密算法加密证书-SM2证书 ssl_certificate C:/nginx-1.24.0/conf/cert/yourdomain.com_sm2_enc.pem; ssl_certificate_key C:/nginx-1.24.0/conf/cert/yourdomain.com_sm2_enc.key; #(可选)配置国际标准RSA算法证书 ssl_certificate C:/nginx-1.24.0/conf/cert/yourdomain.com.pem; ssl_certificate_key C:/nginx-1.24.0/conf/cert/yourdomain.com.key; #配置SSL会话超时时间 ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECC-SM4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }验证配置文件是否正确:
打开命令提示符,进入
nginx-1.24.0安装目录,执行nginx -t。如果配置文件无误,将提示nginx.conf test is successful,此时可以启动 Nginx 服务。如果出现错误提示,请根据提示信息排查并修复配置文件中的问题,直到验证通过。
启动 Nginx 服务。
进入 Nginx 安装目录,找到
nginx.exe文件并双击启动 Nginx 服务。
步骤四:验证 SSL 证书是否配置成功
请通过 HTTPS 访问您已绑定证书的域名(如
https://example.com,example.com需替换为实际域名)。若浏览器地址栏显示安全锁图标,说明证书已成功部署。如访问异常或未显示安全锁,请先清除浏览器缓存或使用无痕(隐私)模式重试。

Chrome 浏览器自 117 版本起,地址栏中的
已被新的
替代,需单击该图标后查看安全锁信息。
国密标准 SSL 证书需要与支持国密算法的浏览器(如 360 浏览器、密信浏览器、红莲花浏览器)配合使用。这类浏览器可以识别并启用国密算法,与部署了国密 SSL 证书的服务器建立安全通信。
如果仍有问题,请参考常见问题进行排查。
常见问题
安装或更新证书后,证书未生效或 HTTPS 无法访问
常见原因如下:
域名未完成备案。请参见如何查看域名解析记录以及 ICP 备案信息。
服务器安全组或防火墙未开放 443 端口。请参见开放安全组的 443 端口和开放服务器防火墙的443端口。
证书的绑定域名未包含当前访问的域名。请参见确认证书是否匹配目标域名。
修改 Nginx 配置文件后未启动或重启 Nginx 服务。具体操作请参见启动Nginx服务。
证书文件未正确替换,或 Nginx 配置中未正确指定证书路径。请检查 Nginx 配置文件和证书文件是否为最新且有效。
域名已接入 CDN、SLB 或 WAF 等云产品,但未在相应产品中安装证书。请参阅流量经过多个云产品时证书的部署位置完成相关操作。
当前域名的 DNS 解析指向多台服务器,但证书仅在部分服务器上安装。需分别在每个服务器中安装证书。
如需进一步排查,请参考:根据浏览器错误提示解决证书部署问题 和 SSL证书部署故障自助排查指南。
如何更新(替换)Nginx 中已安装的 SSL 证书
1. 备份服务器上原有的证书文件(.pem 和 .key)。
2. 登录数字证书管理服务控制台,下载新的证书文件(.pem 和 .key)。
3. 将新证书文件上传到目标服务器,覆盖原有文件(确保路径和文件名一致)。
4. 重载(reload)Nginx 服务,使新证书生效。
如何在 Nginx 中关闭 TLSv1.0 和 TLSv1.1 以避免部分浏览器提示"证书不符合标准"
在 Nginx 监听 443 端口的 server 块中,将 ssl_protocols 配置为仅保留 TLSv1.2 和 TLSv1.3,即 ssl_protocols TLSv1.2 TLSv1.3;。此配置将禁用不安全的 TLSv1.0 和 TLSv1.1。配置完成后,执行 .\nginx.exe -s reload 使设置生效。