国密证书安装部署指南:以Nginx为例
国密证书安装部署指南:以Nginx为例
一、准备
- 下载后证书文件后,上传到服务器里面
国密证书标准有四个证书文件的,分别是:签名公钥证书文件、签名私钥证书文件、加密公钥证书文件和加密私钥证书文件。
我这边使用的是数安时代GDCA的证书,数安时代品牌的国密证书,签名私钥文件和加密私钥使用的是同一个私钥文件 数安时代GDCA证书目录下有三个证书文件,以sign_chain.crt结尾的证书文件是签名公钥11文件,以encrypt_chain.crt结尾的是加密公钥文件。以key文件结尾的是签名证书文件和加密证书文件共用的私钥文件
- 下载需要的安装包,上传到服务器里面
- 下载原版的nginx的二进制包,(本人使用nginx-1.24.0版本)
- 下载数安时代专属的openssl模块插件(gdcassl.tar.gz)
- 安装包下载地址:https://openssl.zhanshuai.com.cn/ (如果需要可以直接访问下载)
3.服务器安安装必备的gcc-c++、pcre-devel 和zlib-devel软件
Centos系统:可以直接使用yum命令安装
yum install gcc-c++ pcre-devel zlib-devel
Ubuntu/Debiam系统上面安装
sudo apt update
sudo apt install build-essential libpcre3-dev zlib1g-dev
二、部署环境
把gdca的国密组件解压到/usr/local/目录下
tar xf gdcassl.tar.gz -C /usr/local
解压nginx的二进制安装包
tar xf nginx-1.24.0.tar.gz
进入解压后的nginx编译安装目录下
cd nginx-1.24.0
修改nginx编译安装指向的openssl版本和模块
vim auto/lib/openssl/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"
开始编译安装nginx,编译的时候需要加上国密组件的相关模块
./configure \
--prefix=/usr/local/nginx \
--without-http_gzip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-file-aio \
--with-openssl="/usr/local/gdcassl" \
--with-cc-opt="-I/usr/local/gdcassl/include" \
--with-ld-opt="-lm"
上述步骤执行完成后,make install,编译成功后nginx默认的生成配置文件的目录在/usr/local/nginx里。
进入/usr/local/nginx/目录下,nginx的启动文件在/usr/local/nginx/sbin/目录下,先查看nginx配置文件中是否存报错,如果没有则启动nginx。
cd /usr/local/nginx/sbin
./nginx -t
如图所示:则代表没问题
./nginx
启动nginx
使用命令查看nginx的http80端口是否存在,如果存在则,浏览器访问测试一下,如果说是云服务器,则直接使用公网IP访问即可,如果是内网服务器,则需要在本地的hosts文件里添加本地解析
ss -ntl | grep 80
三、配置证书
编辑nginx.conf主配置文件
server {
listen 443 ssl; #配置https端口
server_name test.zhanshuai.com.cn; #配置访问域名
ssl_ciphers SM2-WITH-SMS4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL; #配置国密的加密套件
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #配置TLS协议
ssl_verify_client off; #是否开启客户端证书验证
#先配置签名公钥证书和签名私钥证书
ssl_certificate /usr/local/nginx/ssl/server_sign_chain.crt;
ssl_certificate_key /usr/local/nginx/ssl/server.key;
#配置加密公钥证书和加密私钥证书
ssl_certificate /usr/local/nginx/ssl/server_encrypt_chain.crt;
ssl_certificate_key /usr/local/nginx/ssl/server.key;
location / {
root html;
index index.html index.htm;
}
}
把证书文件上传到nginx配置文件里面指向的证书文件所在的
检测nginx配置文件语法。如果没问题则重启nginx
/usr/local/nginx/sbin/nginx -t
四、启动nginx,国密浏览器访问测试
之前nginx已经重启了,只需要重新加载一下nginx的配置文件就行了,(如果不生效,建议把nginx进程杀掉,然后在重启nginx)
/usr/local/nginx/sbin/nginx -s reload
重启成功后,查看服务器里面配置的https端口是否存在
ss -ntl
(如果服务器端口较多,可以使用grep命令过滤一下你配置的https端口: ss -ntl | grep 443)
使用国密浏览器访问网站,(常见的国密浏览器有:奇安信、零信、360企业版、红莲花国密浏览器和密信等......),
由于我这个是自签的国密证书,所以国密浏览器访问会提示证书不受信,但是查看证书和签名算法是国密的SM2或者SM3就代表部署成功了。
网站双算法证书配置(国密证书和国际证书)
配置双算法域名网站(注意:要先把之前的国密证书配置成功后,才能配置双算法证书)
编辑nginx.conf主配置文件
server {
listen 443 ssl; #配置https端口
server_name test.zhanshuai.com.cn; #配置访问域名
#配置双算法的加密套件
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:SM4-GCM-SM3";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #配置TLS协议
ssl_verify_client off; #是否开启客户端证书验证
#先配置签名公钥证书和签名私钥证书
ssl_certificate /usr/local/nginx/ssl/server_sign_chain.crt;
ssl_certificate_key /usr/local/nginx/ssl/server.key;
#配置加密公钥证书和加密私钥证书
ssl_certificate /usr/local/nginx/ssl/server_encrypt_chain.crt;
ssl_certificate_key /usr/local/nginx/ssl/server.key;
#配置国密算法证书
ssl_certificate /usr/local/nginx/ssl/test.zhanshuai.com.cn.pem; #公钥
ssl_certificate_key /usr/local/nginx/ssl/test.zhanshuai.com.cn.key; #私钥
location / {
root html;
index index.html index.htm;
}
}
把证书文件上传到nginx配置文件里面指向的证书文件所在的
检测nginx配置文件语法。如果没问题则重启nginx
/usr/local/nginx/sbin/nginx -t
配置完成启动后,像谷歌、360、火狐等一会常见的浏览器访问网站查看证书的话会显示的是国际RSA算法的证书
像一些国密浏览器访问网站,例如:零信,奇安信,红莲花等一些国密浏览器,访问网站查看证书则是SM2算法的国密证书