国密证书标准有四个证书文件的,分别是:签名公钥证书文件、签名私钥证书文件、加密公钥证书文件和加密私钥证书文件。
注意:目前国密算法SSL证书主要支持:Nginx,其它环境不支持。
以下教程配置的是SM2+RSA双证书配置方式,单国密证书配置只需删除:
ssl_certificate d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_rsa.crt;
ssl_certificate_key d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_rsa.key;
Nginx安装-Windows版
一、环境准备
1、Windows 操作系统;
2、Nginx国密版,客服获取
nginx-1.24.0
nginx-1.18.0
3、获得Gworg SM2 SSL证书;
二、安装证书
安装和配置 Nginx(文档以 nginx-1.24.0(x64)/nginx-1.18.0(x86)为例,目录为
D:\gmssl,用户根据实际环境操作即可);
(1) 、根据操作系统版本(32/64 位),选择对应的 nginx 压缩包,复制到服务
器上,并解压到相应的目录,如 d:\gmssl;
(2) 、在 nginx 的目录下(如 conf)创建存放证书的文件夹,如 ssl;
(3) 、解压从沃通下载的证书压缩包,将每个压缩包 Nginx 中的 crt 文件和创
建 CSR 时保存的.key 文件放到第(2)步创建的文件夹下(共三个.crt,两个.key);
(4) 、编辑 nginx/conf 目录下 nginx.conf 文件, 在 http{}中,添加 include
ssl.conf;
(5) 、在 nginx/conf 目录下,新建 ssl.conf 文件;
(6) 、编辑新建的 ssl.conf 文件,添加证书配置,如下所示:
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_rsa.crt;
ssl_certificate_key d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_rsa.key;
ssl_certificate d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_sign.crt;
ssl_certificate_key d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_sm2.key;
ssl_certificate d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_en.crt;
ssl_certificate_key d:/gmssl/nginx-1.16.0/conf/ssl/domain.com_sm2.key;
#先配置签名证书,再配置加密证书,签名加密证书私钥 key 为同一个!
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;
}
}
PS:建议用 Administrator 账户配置证书,若用非管理员权限账户配置,可能出现找
不到证书的错误!
以上配置仅为参考,具体的 server_name,证书名称,证书存放目录,location 等配
置请根据实际环境配置!
(7)、检测,在服务器 dos 命令下,cd 进入 nginx 目录,如 cd d:\gmssl\nginx1.16.0,输入 nginx -t,检测 nginx 配置是否正常
如果有提示错误,请根据提示排查错误,直到显示正常!
(5)、启动 nginx:进入 nginx 目录,双击运行 nginx.exe!
三、检测 SSL 配置
下载沃通密信浏览器测试 https 访问,下载地址:https://www.mesince.com/zhcn/browser
下载安装后,打开浏览器,在地址栏输入 https://domain.com(证书实际绑定域名)测试是
否能正常访问以及显示小绿锁,如无法正常访问,请确保防火墙或安全组等策略有放行
443 端口(SSL 配置端口)。
Linux Nginx版
1、安装 Nginx(文档以 nginx-1.15.12 为例,目录为/usr/local,用户根据实际环境操作
即可);
在安装 nginx 前,需要确保系统安装了 gcc-c++、pcre-devel 和 zlib-devel 软件。
(1) 、将上述步骤下载的 Nginx 和国密模块上传至 linux 操作系统/usr/local/目
录下,分别解压;
(2) 、cd 进入 nginx 的解压目录 usr/local/nginx-1.15.12,执行./configure
--prefix=/usr/local/nginx --with-http_stub_status_module --with-stream
--with-http_ssl_module --with-stream_ssl_module
--with-openssl=/usr/local/wotrus_ssl (wotrus_ssl 根据模块解压后文件夹名称配置)
Ps:这里只指定了几个需要的模块,其他模块用户 可自行增加;
(3)、上述步骤执行完成后,再输入 make && make install,编译 nginx。执行该步骤
后,若无报错,则表示编译成功,可以开始配置证书;如果执行过程中出现
如上图显示的错误,则需要进入 nginx-1.15.12/auto/lib/openssl 目录,
vi/vim 编辑 conf 文件(可先备份),找到下面所示的四行代码:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
改为:
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
保存后,先执行 make clean,再重新执行(2)步骤的./configure 和(3)步骤的 make
&& make install;
(4)、编译完成后,cd 进入/usr/local/nginx 目录,用
/usr/local/nginx/sbin/nginx -t 检测是否正常,正常则输入
/usr/local/nginx/sbin/nginx 启动 nginx;
Ps:上述步骤中的目录皆是测试环境的目录,具体路径,请根据实际用户环境!
2、配置SSL
(1)、下载SSL证书,解压下载的国密SSL证书sm2.zip 压缩包,
Nginx 配置需要用到三个文件夹中 NginxServer 中的.crt 文件,私钥文件为申
请证书创建 CSR 时保存的两个.key 文件(sign 和 encrypt 可共用同一个私钥)。
(2)、上传 SSL 证书,cd 进入/usr/local/nginx/conf,新建 sm2 目录,将上面的三个
crt 文件以及两个.key 文件上传至该目录;
(3)、配置 SSL 证书,进入/usr/local/nginx/conf,vi/vim 编辑 nginx.conf 文件,增加
如下配置,然后保存:
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate /usr/local/nginx/conf/sm2/domain.com_rsa.crt;
ssl_certificate_key /usr/local/nginx/conf/sm2/domain.com_rsa.key;
ssl_certificate /usr/local/nginx/conf/sm2/domain.com_sign.crt;
ssl_certificate_key /usr/local/nginx/conf/sm2/domain.com_sm2.key;
ssl_certificate /usr/local/nginx/conf/sm2/domain.com_en.crt;
ssl_certificate_key /usr/local/nginx/conf/sm2/domain.com_sm2.key;
#先配置签名证书,再配置加密证书,签名加密证书私钥key为同一个!
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;
}
}
以上仅为参考,具体的 server_name,证书名称,证书存放目录,location 等配置请
根据实际环境配置!
(4)、检测,执行/usr/local/nginx/sbin/nginx -t,看配置是否正常
如果有提示错误,请根据提示排查错误,直到显示正常!
(5)、重启 nginx:执行/usr/local/nginx/sbin/nginx -s reload,重启 nginx!