在Nginx服务器安装国密SSL证书(Windows)

本文将指导您如何在Windows操作系统的Nginx服务器上,配置国密标准SSL数字证书,具体包括证书文件的下载与上传、在Nginx上配置证书文件参数,以及安装证书后的结果验证。

重要

本文以Windows 64操作系统、Nginx 1.24.0国密版(非普通官网下载)、Wosign DV国密SSL证书为例。不同版本的操作系统和Web服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务

背景信息

国密SSL证书是指根据中国国家密码局制定的密码算法标准所生成的SSL证书,主要用于满足企业对HTTPS协议国产化改造及国密算法应用的合规要求。如果您的Web应用服务器仅部署了国密SSL证书,则只能在支持国密算法的浏览器中访问,如密信浏览器和红莲花浏览器。因此,为了确保与各类浏览器的兼容性,通常会采取SM2/RSA双证书部署方案。

前提条件

  • 已通过数字证书管理服务签发国密标准证书(双证书方案还需要签发国际标准证书)。具体操作,请参见购买正式证书申请证书

  • 域名已正确解析至当前服务器,且已完成工信部 ICP 备案(适用于中国内地服务器)。

    如何查看域名解析记录以及 ICP 备案信息

    打开网络拨测工具,选择网络诊断分析,输入当前域名,确认以下信息:

    • DNS 服务商解析结果中 A 记录的 IP 为当前服务器的公网 IP。

    • 备案检查网站已备案。若显示“网站未备案,请咨询网站服务器提供商”,请完成备案后再安装证书。

  • 已获得本服务器的管理权限(即“root账号”或“有 sudo 权限”的账号)。

操作步骤

步骤一:下载SSL证书

  1. 登录数字证书管理服务控制台。在左侧导航栏选择证书管理 > SSL证书管理

  2. SSL证书管理页面,定位需部署的目标证书,并确认以下信息:

    1. 证书状态:确保其为已签发。若为即将过期已过期,则需续费SSL证书

    2. 绑定域名:确保其能够匹配所有需保护的域名,否则未匹配的域名访问 HTTPS 时将出现安全警告。如需添加或修改,请参见追加和更换域名

      确认证书是否匹配目标域名

      证书的绑定域名可包含多个精确域名和通配符域名。每类域名的匹配规则如下:

      • 精确域名:仅对指定域名生效。

        • example.com 仅对 example.com 生效。

        • www.example.com 仅对 www.example.com 生效。

      • 通配符域名:仅对其一级子域名生效。

        • *.example.com 对 www.example.coma.example.com 等一级子域名生效。

        • *.example.com 对根域名 example.com 和多级子域名 a.b.example.com 不生效。

      说明

      如需匹配多级子域名,绑定域名中需包含该域名(如 a.b.example.com),或包含相应的通配符域名(如 *.b.example.com)。

  3. 在目标证书操作列单击更多进入证书详情页面,然后在下载页签中下载服务器类型Nginx 的证书。

  4. 解压下载的证书压缩包,其中包含:

    • 签名证书:<证书绑定域名>_sm2_sign.pem<证书绑定域名>_sm2_sign.key

    • 加密证书:<证书绑定域名>_sm2_enc.pem<证书绑定域名>_sm2_enc.key

      说明

      若申请证书时使用 OpenSSL、Keytool 等工具生成 CSR 文件,私钥文件仅保存在您本地,下载的证书包中不包含私钥。如私钥遗失,证书将无法使用,需重新购买正式证书并生成CSR和私钥。

步骤二:安装Nginx国密版

  1. 下载NginxWindows国密版安装包:

    请根据您的操作系统位数选择合适的安装包进行下载。

  2. 解压Nginx国密版安装包:

    请根据您服务器的操作系统位数,选取相匹配的Nginx国密版压缩包文件。将其解压至指定目录,例如C:\nginx-1.24.0

    说明

    本文以C:\nginx-1.24.0作为Nginx的安装目录,来演示后续的安装过程。

步骤三:在Nginx服务器配置 SSL 证书

  1. 登录Windows服务器。

    阿里云服务器

    以下操作以阿里云云服务器 ECS 为例进行说明,其他类型的服务器请参照对应产品文档进行操作。

    1. 登录ECS管理控制台,在页面左侧顶部,选择目标ECS实例所在地域。

    2. 在左侧导航栏中选择实例与镜像 > 实例,在实例页面找到目标ECS实例,点击操作列的远程连接

    3. 在弹出的对话框中,选择通过Workbench远程连接并单击立即登录

    4. 选择终端连接作为连接方式,输入相关认证信息,并根据页面提示完成登录,即可进入服务器终端。详细操作请参考使用Workbench登录ECS实例

      说明

      若系统弹出“安全组白名单开通提示”面板,请按照页面提示单击一键添加

    其他云厂商服务器

    请通过对应云厂商提供的远程连接功能登录服务器终端。

    非云厂商服务器(如物理服务器、IDC托管主机等)

    请在本地使用登录服务器。

    • Windows:在系统自带的远程桌面连接应用进行连接。

    • macOS:可以在软件商店下载Windows App(之前名为Microsoft远程桌面)进行连接。

  2. 开放安全组的 443 端口。

    重要

    若您的服务器部署在云平台,请确保其安全组已开放入方向 443 端口 (TCP),否则外部无法访问服务。以下操作以阿里云 ECS 为例,其他云平台请参考其官方文档。

    1. 登录ECS管理控制台,在页面左侧顶部,选择目标 ECS 实例所在地域。在实例页面,找到目标 ECS 实例。

    2. 单击目标实例名称,进入实例详情页面,单击安全组 > 内网入方向全部规则,确保存在一条授权策略允许协议类型为 TCP、目的端口范围为 HTTPS(443)、授权对象任何位置(0.0.0.0/0)的规则。如不存在此规则,请进行添加。

      如何添加安全组规则

      1. 在 ECS 实例详情页面,单击安全组 > 安全组列表,选择目标安全组并进入其详情页。

      2. 在安全组详情页的安全组详情 > 入方向下,单击增加规则

      3. 新建安全组规则面板,将访问目的(本实例)设置为 HTTPS(443),其余参数保持默认值,单击确定即可。

      4. 更多安全组配置请参见添加安全组规则

  3. 开放服务器防火墙的443端口。

    1. 登录Windows服务器,单击左下角开始菜单,打开控制面板

    2. 点击系统和安全 > Windows防火墙 > 检查防火墙状态

    3. 如果防火墙处于如下图的关闭状态,无需额外操作。image

    4. 如果防火墙已开启,需放行HTTPS规则。

      如何放行防火墙HTTPS规则

      1. 单击左侧高级设置 > 入站规则,检查是否存在协议TCP,本地端口443,操作阻止的入站规则。

      2. 若存在此类规则,需要右键单击相应规则并选择属性,在常规页签,将其修改为允许连接应用

      3. 更多防火墙配置,请参见配置防火墙规则

  4. 上传证书文件到服务器,以下三种方式任选其一即可。

    Workbench上传文件

    1. 在前面步骤打开的 Workbench 页面中,单击左下角开始菜单,查找并打开名为此电脑计算机文件资源管理器的选项。

    2. 双击 xxx上的workbench

      image

    3. 从本地拖动之前步骤下载的zip文件至该目录,并右键刷新文件夹。

    4. 然后将目标文件从该目录拖动到 C 盘或者其他盘。

      重要

      重新连接、退出实例时,Workbench会自动清除该实例重定向的驱动程序和文件夹中已上传的所有文件信息以节省空间,该目录仅用于文件传输,请不要保存文件。

    远程连接工具上传文件

    在使用远程桌面连接Windows App连接实例时,可以直接将下载的证书文件复制 > 粘贴上传至服务器,具体操作,请参见使用远程桌面或Windows APPWindows实例传输文件

    在服务器上下载证书文件

    如果您的服务器可以访问公网并登录阿里云控制台,则可以直接在服务器上登录数字证书管理服务控制台进行步骤一的下载。

  5. 进入Nginx服务安装目录,在C:\nginx-1.24.0\conf目录下创建cert目录,用于存放国密标准和国际标准SSL证书。

    cert目录仅为示例,证书存放目录没有命名限制。

  6. 分别将国密标准证书和国际标准证书文件上传至 C:\nginx-1.24.0\conf\cert目录。

    说明

    您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTY、XshellWinSCP等。如果您使用的是阿里云云服务器 ECS,上传文件具体操作,请参见使用远程桌面或Windows APPWindows实例传输文件上传文件到Linux云服务器

    • 证书上传文件示例:image

  7. C:\nginx-1.24.0\conf\nginx.confhttp区块内,添加include ssl.conf;配置。如下图:image

  8. 配置ssl.conf文件。

    1. 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;
      	}
      }
      
    2. 验证配置文件是否正确:

      在命令提示符窗口,进入nginx-1.24.0安装目录,输入nginx -t若配置文件无误,则提示:nginx.conf test is successful,可以启动Nginx服务,如下图:

      image如出现错误提示,请根据提示进行错误排查,并重新修改配置文件中存在的问题,直至显示正常。

  9. 启动Nginx服务。

    如下图,进入Nginx安装目录,找到nginx.exe文件并双击,启动Nginx服务。image

步骤四:验证SSL证书是否配置成功

  1. 请通过 HTTPS 访问您已绑定证书的域名(如 https://yourdomain.comyourdomain.com 需替换为实际域名)。

  2. 若浏览器地址栏显示安全锁图标,说明证书已成功部署。如访问异常或未显示安全锁,请先清除浏览器缓存或使用无痕(隐私)模式重试。如仍有问题,请参考常见问题进行排查。

    image

    说明

    Chrome 浏览器自 117 版本起,地址栏中的image已被新的image替代,需单击该图标后查看安全锁信息。

    image

重要

国密标准SSL数字证书需与支持国密算法的浏览器(如360、密信、红莲花浏览器)配合使用,以确保通信安全。这类浏览器能识别并启用国密算法,与部署国密标准SSL证书的服务器实现安全通信。

说明

如仍有问题,请参考常见问题进行排查。

常见问题

安装或更新证书后,证书未生效或 HTTPS 无法访问

常见原因如下:

如何更新(替换)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 使设置生效。