本文将指导您如何在Windows操作系统的Nginx服务器上,配置国密标准SSL数字证书,具体包括证书文件的下载与上传、在Nginx上配置证书文件参数,以及安装证书后的结果验证。
本文以Windows 64位操作系统、Nginx 1.24.0国密版(非普通官网下载)、Wosign DV国密SSL证书为例。不同版本的操作系统和Web服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务。
背景信息
国密SSL证书是指根据中国国家密码局制定的密码算法标准所生成的SSL证书,主要用于满足企业对HTTPS协议国产化改造及国密算法应用的合规要求。如果您的Web应用服务器仅部署了国密SSL证书,则只能在支持国密算法的浏览器中访问,如密信浏览器和红莲花浏览器。因此,为了确保与各类浏览器的兼容性,通常会采取SM2/RSA双证书部署方案。
前提条件
操作步骤
步骤一:下载SSL证书
登录数字证书管理服务控制台。在左侧导航栏选择 。
在SSL证书管理页面,定位需部署的目标证书,并确认以下信息:
在目标证书操作列单击更多进入证书详情页面,然后在下载页签中下载服务器类型为Nginx 的证书。
解压下载的证书压缩包,其中包含:
签名证书:
<证书绑定域名>_sm2_sign.pem
和<证书绑定域名>_sm2_sign.key
。加密证书:
<证书绑定域名>_sm2_enc.pem
和<证书绑定域名>_sm2_enc.key
。说明若申请证书时使用 OpenSSL、Keytool 等工具生成 CSR 文件,私钥文件仅保存在您本地,下载的证书包中不包含私钥。如私钥遗失,证书将无法使用,需重新购买正式证书并生成CSR和私钥。
步骤二:安装Nginx国密版
下载Nginx的Windows国密版安装包:
Windows64位操作系统:Nginx 1.24.0 国密版
Windows32位操作系统:Nginx 1.18.0 国密版
请根据您的操作系统位数选择合适的安装包进行下载。
解压Nginx国密版安装包:
请根据您服务器的操作系统位数,选取相匹配的Nginx国密版压缩包文件。将其解压至指定目录,例如
C:\nginx-1.24.0
。说明本文以
C:\nginx-1.24.0
作为Nginx的安装目录,来演示后续的安装过程。
步骤三:在Nginx服务器配置 SSL 证书
登录Windows服务器。
阿里云服务器
以下操作以阿里云云服务器 ECS 为例进行说明,其他类型的服务器请参照对应产品文档进行操作。
登录ECS管理控制台,在页面左侧顶部,选择目标ECS实例所在地域。
在左侧导航栏中选择
,在实例页面找到目标ECS实例,点击操作列的远程连接。在弹出的对话框中,选择通过Workbench远程连接并单击立即登录。
选择终端连接作为连接方式,输入相关认证信息,并根据页面提示完成登录,即可进入服务器终端。详细操作请参考使用Workbench登录ECS实例。
说明若系统弹出“安全组白名单开通提示”面板,请按照页面提示单击一键添加。
其他云厂商服务器
请通过对应云厂商提供的远程连接功能登录服务器终端。
非云厂商服务器(如物理服务器、IDC托管主机等)
请在本地使用登录服务器。
Windows:在系统自带的远程桌面连接应用进行连接。
macOS:可以在软件商店下载Windows App(之前名为Microsoft远程桌面)进行连接。
开放安全组的 443 端口。
重要若您的服务器部署在云平台,请确保其安全组已开放入方向 443 端口 (TCP),否则外部无法访问服务。以下操作以阿里云 ECS 为例,其他云平台请参考其官方文档。
登录ECS管理控制台,在页面左侧顶部,选择目标 ECS 实例所在地域。在实例页面,找到目标 ECS 实例。
单击目标实例名称,进入实例详情页面,单击
,确保存在一条授权策略为允许、协议类型为 TCP、目的端口范围为 HTTPS(443)、授权对象为任何位置(0.0.0.0/0)的规则。如不存在此规则,请进行添加。
开放服务器防火墙的443端口。
登录Windows服务器,单击左下角开始菜单,打开控制面板。
点击
。如果防火墙处于如下图的关闭状态,无需额外操作。
如果防火墙已开启,需放行HTTPS规则。
上传证书文件到服务器,以下三种方式任选其一即可。
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,上传文件具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件或上传文件到Linux云服务器。
证书上传文件示例:
在
C:\nginx-1.24.0\conf\nginx.conf
的http
区块内,添加include ssl.conf;
配置。如下图:配置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://yourdomain.com
,yourdomain.com
需替换为实际域名)。若浏览器地址栏显示安全锁图标,说明证书已成功部署。如访问异常或未显示安全锁,请先清除浏览器缓存或使用无痕(隐私)模式重试。如仍有问题,请参考常见问题进行排查。
说明Chrome 浏览器自 117 版本起,地址栏中的
已被新的
替代,需单击该图标后查看安全锁信息。
国密标准SSL数字证书需与支持国密算法的浏览器(如360、密信、红莲花浏览器)配合使用,以确保通信安全。这类浏览器能识别并启用国密算法,与部署国密标准SSL证书的服务器实现安全通信。
如仍有问题,请参考常见问题进行排查。
常见问题
安装或更新证书后,证书未生效或 HTTPS 无法访问
常见原因如下:
域名未完成备案。请参见如何查看域名解析记录以及 ICP 备案信息。
服务器安全组或防火墙未开放 443 端口。请参见开放安全组的 443 端口和开放服务器防火墙的443端口。
证书的绑定域名未包含当前访问的域名。请参见确认证书是否匹配目标域名。
修改 Nginx 配置文件后,未启动或重启Nginx服务。具体操作可参见启动Nginx服务。
证书文件未正确替换,或 Nginx 配置未正确指定证书路径。请检查 Nginx 配置文件和所用证书文件是否为最新且有效。
域名已接入 CDN、SLB 或 WAF 等云产品,但未在相应产品中安装证书。请参阅云产品部署证书完成相关操作。
当前域名的 DNS 解析指向多台服务器,但证书仅在部分服务器上安装。需分别在每个服务器中安装证书。
如需进一步排查,请参考:根据浏览器错误提示解决证书部署问题 和 SSL证书部署故障自助排查指南。
如何更新(替换)Nginx 中已安装的 SSL 证书
请先备份服务器上原有的证书文件(.pem 和 .key),然后登录数字证书管理服务控制台,下载新的证书文件(.pem 和 .key),并上传到目标服务器覆盖原有文件(确保路径和文件名一致)。最后,重载(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
使设置生效。