国密证书安装部署-------nginx

一、准备

  1. 下载后证书文件后,上传到服务器里面

    

 

 


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

我这边使用的是数安时代GDCA的证书,数安时代品牌的国密证书,签名私钥文件和加密私钥使用的是同一个私钥文件 数安时代GDCA证书目录下有三个证书文件,以sign_chain.crt结尾的证书文件是签名公钥11文件,以encrypt_chain.crt结尾的是加密公钥文件。以key文件结尾的是签名证书文件和加密证书文件共用的私钥文件

  2. 下载需要的安装包,上传到服务器里面

    - 下载原版的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算法的国密证书

posted @ 2024-09-21 10:11  阿占的运维之路  阅读(2321)  评论(0)    收藏  举报