搭建支持国密GmSSL的Nginx环境

打印 上一主题 下一主题

主题 828|帖子 828|积分 2484

准备

1、服务器准备:本文搭建使用的服务器是CentOS 7.6
2、安装包准备:需要GmSSL、国密Nginx,可通过互联网下载大概从 https://download.csdn.net/download/m0_46665077/89936158 下载国密GmSSL安装包和国密Nginx安装包。
服务器安装依靠包

服务器、安装包准备好了之后,先执行如下命令安装依靠包
  1. yum install -y lrzsz tree screen psmisc lsof tcpdump wget ntpdate gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2 libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed  
复制代码
安装GmSSL

1.将安装包 GmSSL-master.zip 上传到目标机器 /root 目录下,并解压、编译安装,逐次执行如下命令
  1. unzip /root/GmSSL-master.zip
  2. cd GmSSL-master/
  3. ./config --prefix=/usr/local/gmssl
  4. make -j4 && sudo make install
复制代码
2.调整软连接,主要调整 libssl.so.1.1 和 libcrypto.so.1.1 库文件链接 和 gmssl 快捷链接,不调整的执行gmssl version
会报错
  1. ln -s /usr/local/gmssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
  2. ln -s /usr/local/gmssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
  3. ln -sv /usr/local/gmssl/bin/gmssl  /usr/sbin/
复制代码
3.查看gmssl版本,确保gmssl安装成功
  1. gmssl version
复制代码
GmSSL安装成功参考如下截图

安装Nginx(支持国密的版本)

1.将Nginx安装包 nginx-1.21.6.zip 上传到目标机器 /root 目录下,并解压到 /usr/local/ 目录,进入nginx目录
  1. unzip -d /usr/local/ nginx-1.21.6.zip
  2. cd /usr/local/nginx-1.21.6/
复制代码
2.编译安装nginx
  1. ./configure --prefix=/home/nginx
  2. --with-http_ssl_module
  3. --with-http_v2_module
  4. --with-http_realip_module
  5. --with-http_stub_status_module
  6. --with-http_gzip_static_module
  7. --with-pcre
  8. --with-stream
  9. --with-stream_ssl_module
  10. --with-stream_realip_module
  11. --with-openssl=/usr/local/gmssl
  12. make -j4 &&sudo make install
复制代码
3.创建nginx的软链接,并验证nginx版本
  1. ln -sv /home/nginx/sbin/nginx /usr/sbin
  2. nginx -V
复制代码
Nginx安装成功参考如下截图

至此,GmSSL、国密Nginx安装完成


  • GmSSL安装路径:/usr/local/gmssl
  • Nginx安装路径、配置文件路径:/home/nginx
Nginx配置

nginx开机启动

1.配置 nginx 开机自启,创建 /etc/systemd/system/nginx.service 的服务文件
  1. sudo vim /etc/systemd/system/nginx.service
  2. #添加如下内容:
  3. [Unit]
  4. Description=Nginx HTTP Server
  5. After=network.target
  6. [Service]
  7. Type=forking
  8. ExecStart=/home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf
  9. ExecReload=/home/nginx/sbin/nginx -s reload
  10. ExecStop=/home/nginx/sbin/nginx -s stop
  11. PrivateTmp=true
  12. [Install]
  13. WantedBy=multi-user.target
复制代码
2.保存文件,重新加载体系服务配置文件,并设置开机启动Nginx服务
  1. systemctl daemon-reload
  2. systemctl start nginx
  3. systemctl enable nginx  
复制代码
约定证书命名和存放路径

约定证书命名和存放路径如下:
国密证书存放:/usr/local/gmssl/ssl/gm/


  • 署名证书命名:域名_sign.crt、域名_sign.key
  • 加密证书命名:域名_enc.crt、域名_enc.key
国际RSA证书存放:/usr/local/gmssl/ssl/rsa/


  • RSA证书命名:域名_rsa.crt、域名_rsa.key
    上传署名证书、加密证书、RSA证书到指定目录
    mkdir /usr/local/gmssl/ssl/gm
    mkdir /usr/local/gmssl/ssl/rsa
签发证书

可访问 https://www.gmcrt.cn/gmcrt/index.jsp 签发免费的国密测试证书,进行测试

创建nginx配置文件

1.创建 conf.d 文件(不创建的话,需要直接修改 nginx.conf 文件),让 nginx.conf 主配置文件支持读取以 conf 结尾的子配置文件
  1. mkdir /home/nginx/conf/conf.d
复制代码
2.创建nginx配置文件
  1. vi  /home/nginx/conf/conf.d/test.conf
  2. #test.conf添加的配置如下
  3. server{
  4.         listen 443 ssl;
  5.         server_name test.com;
  6.         
  7.         #国际RSA证书配置,若不需要可单独删除此部分
  8.         ssl_certificate /usr/local/gmssl/ssl/rsa/test_rsa.crt;
  9.         ssl_certificate_key /usr/local/gmssl/ssl/rsa/test_rsa.key;
  10.         
  11.         #国密证书配置,先配置签名证书,再配置加密证书                           
  12.         ssl_certificate /usr/local/gmssl/ssl/gm/test_sign.crt;
  13.         ssl_certificate_key /usr/local/gmssl/ssl/gm/test_sign.key;        
  14.         ssl_certificate /usr/local/gmssl/ssl/gm/test_enc.crt;
  15.         ssl_certificate_key /usr/local/gmssl/ssl/gm/test_enc.key;
  16.         
  17.         ssl_session_cache    shared:SSL:1m;  #开启缓存 大小1M
  18.         ssl_session_timeout  5m;     # 指定客户端可以重用会话参数的时间(超时之后不可使用)
  19.         
  20.         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  21.         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECC-SM4-SM3:ECDHE-SM4-SM3:SM2-WITH-SMS4-SM3:ECDHE-SM2-WITH-SMS4-GCM-SM3:HIGH:!aNULL:!MD5:!RC4:!DHE;
  22.         ssl_prefer_server_ciphers on;
  23.         ssl_verify_client off;
  24.         
  25.         location / {
  26.             root   html;
  27.             index  index.html index.htm;
  28.   
  29.         }
  30. }
复制代码
启动nginx

  1. ginx -c /home/nginx/conf/nginx.conf
  2. nginx -s reload        #重新加载nginx配置
复制代码
访问测试

启动Nginx后进行访问测试

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表