国密SM2算法配置教程

发布时间:2024/10/14 16:11:21 打印 字号:

国密证书标准有四个证书文件的,分别是:签名公钥证书文件、签名私钥证书文件、加密公钥证书文件和加密私钥证书文件。

注意:目前国密算法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。执行该步骤

后,若无报错,则表示编译成功,可以开始配置证书;如果执行过程中出现

1014162236.png

如上图显示的错误,则需要进入 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!