本文将阐述Linux CentOS环境下如何在Nginx服务器上配置Wosign品牌的国密标准SSL数字证书,具体包括证书文件的下载与上传、在Nginx上配置证书文件参数,以及安装证书后的结果验证。成功配置国密标准SSL证书后,您将能够通过HTTPS安全地访问Nginx服务器。
本文以Linux CentOS操作系统、Nginx 1.18.0、Wosign DV国密SSL证书为例。不同版本的操作系统和Web服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务。
背景信息
国密SSL证书采用国家自主知识产权的加密算法,自主可控性强,能有效抵御国外密码分析技术的攻击,保障数据传输的安全性。它符合国家政策要求,能确保业务的合规性。使用国密标准SSL数字证书是保障信息安全、满足合规要求、提升用户体验的重要选择。如果您的Web应用服务器仅部署了国密SSL证书,则只能在支持国密算法的浏览器中访问,如密信浏览器和红莲花浏览器。因此,为了确保与各类浏览器的兼容性,通常会采取SM2/RSA双证书部署方案。
对于已安装的Nginx,需要卸载后重新安装。由于官方版Nginx+OpenSSL不支持国密算法,因此如果要适配国密算法,需要重新编译Nginx,并指定Wosign厂商的国密SM2模块(wotrus_ssl)。
前提条件
已通过数字证书管理服务控制台签发的RSA算法的SSL证书和Wosign品牌的国密SM2证书。具体操作,请参见购买SSL证书(额度)和提交证书申请。
SSL证书绑定的域名已完成DNS解析。您可以通过DNS验证证书工具,检测域名DNS解析是否生效。具体操作,请参见DNS生效验证。
如果您的证书绑定域名在中国内地,需确保已完成ICP备案。更多信息,请参见什么是ICP备案。
已在Web服务器开放443端口。
步骤一:下载SSL证书
登录数字证书管理服务控制台。
在左侧导航栏,选择。
在SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。
在服务器类型为Nginx的操作列,单击下载。
解压缩已下载的SSL证书压缩包。
根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。
CSR生成方式
证书压缩包包含的文件
系统生成或选择已有的CSR
RSA加密算法证书:<证书ID_证书绑定域名>.pem和<证书ID_证书绑定域名>.key
SM2加密算法证书:
签名证书:<证书绑定域名>_sm2_sign.pem和<证书绑定域名>_sm2_sign.key
加密证书:<<证书绑定域名>>_sm2_enc.pem和<<证书绑定域名>>_sm2_enc.key
手动填写
如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。
如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换。
步骤二:安装Nginx服务和Wosign(沃通)国密SM2模块
安装Nginx依赖:
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载Nginx安装包并解压:
wget https://nginx.org/download/nginx-1.18.0.tar.gz #解压下载完成后的安装包 tar -zxvf nginx-1.18.0.tar.gz
下载国密SM2模块并解压:
wget https://www.wotrus.com/download/wotrus_ssl.tar.gz #解压 tar -zxvf wotrus_ssl.tar.gz
安装Nginx,执行以下命令:
#进入nginx-1.18.0目录配置(wotrus_ssl2.0 根据模块解压后文件夹名称配置) ./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_ssl2.0 #编译安装 make && make install
如果编译执行过程出现报错:make[1]: *** [/usr/local/wotrus_ssl2.0/.openssl/include/openssl/ssl.h] Error 127,需要修改/usr/local/nginx1.18.0/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安装目录,启动Nginx:
cd /usr/local/nginx/sbin #启动nginx ./nginx
网络请求测试Nginx是否正常:
#yourdomain替换为您的域名或者IP地址 curl yourdomain
步骤三:在 Nginx 服务器配置 SSL 证书
进入Nginx服务安装目录,执行以下命令:
#在Nginx的配置文件目录下,创建一个用于存放国密标准的SSL数字证书的cert目录。cert目录仅为示例,证书存放目录没有命名限制。 mkdir /usr/local/nginx/conf/cert #在Nginx的配置文件目录下,创建一个用于存放国际标准的SSL数字证书的cn目录。cn目录仅为示例,证书存放目录没有命名限制。 mkdir /usr/local/nginx/conf/cert/cn
将证书文件上传至对应目录。
说明您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTy、Xshell或WinSCP等。如果您使用的阿里云云服务器 ECS,上传文件具体操作,请参见上传或下载文件(Windows)或上传文件到Linux云服务器。
示例:
修改Nginx配置文件
配置SSL证书,在/usr/local/nginx/conf目录下,修改nginx.conf 配置文件,添加以下配置。
server { listen 443 ssl; server_name apache.yourdomain.com; #配置国密证书 ssl_certificate /usr/local/nginx/conf/cert/apache.yourdomain.com_sm2_sign.pem; ssl_certificate_key /usr/local/nginx/conf/cert/apache.yourdomain.com_sm2_sign.key; ssl_certificate /usr/local/nginx/conf/cert/apache.yourdomain.com_sm2_enc.pem; ssl_certificate_key /usr/local/nginx/conf/cert/apache.yourdomain.com_sm2_enc.key; #配置国际证书 ssl_certificate /usr/local/nginx/conf/cert/cn/apache.yourdomain.com.pem; ssl_certificate_key /usr/local/nginx/conf/cert/cn/apache.yourdomain.com.key; #设置ssl 的会话超时时间为 5 分钟 ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #配置ssl证书所需的加密套件 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; } }
说明以上配置仅供参考,请根据实际环境配置具体的证书目录、证书名称及域名等。
验证配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
。若配置文件无误,则提示:nginx.conf test is successful,可以启动Nginx服务,如下图:如出现错误提示,请根据提示进行错误排查,并重新修改配置文件中存在的问题,直至显示正常,然后启动Nginx服务。
重启Nginx服务。
执行以下操作重启Nginx,使配置生效。
#重启Nginx服务: /usr/local/nginx/sbin/nginx -s reload
步骤四:验证SSL证书是否配置成功
打开浏览器,地址栏中输入“https://xxx”并访问。如果网页地址栏出现安全锁标志,则表示证书已成功安装。
国密标准SSL数字证书需与支持国密算法的浏览器(如360、密信、红莲花浏览器)配合使用,以确保通信安全。这类浏览器能识别并启用国密算法,与部署国密标准SSL证书的服务器实现安全通信。
国际证书谷歌浏览器显示如下图所示:
国密证书密信浏览器显示如下图所示: