当前位置: 首页 > article >正文

搭建支持国密GmSSL的Nginx环境

准备

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

服务器安装依赖包

服务器、安装包准备好了之后,先执行如下命令安装依赖包

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 目录下,并解压、编译安装,逐次执行如下命令

unzip /root/GmSSL-master.zip
cd GmSSL-master/
./config --prefix=/usr/local/gmssl
make -j4 && sudo make install

2.调整软连接,主要调整 libssl.so.1.1 和 libcrypto.so.1.1 库文件链接 和 gmssl 快捷链接,不调整的执行gmssl version会报错

ln -s /usr/local/gmssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/gmssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -sv /usr/local/gmssl/bin/gmssl  /usr/sbin/

3.查看gmssl版本,确保gmssl安装成功

gmssl version

GmSSL安装成功参考如下截图
在这里插入图片描述

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

1.将Nginx安装包 nginx-1.21.6.zip 上传到目标机器 /root 目录下,并解压到 /usr/local/ 目录,进入nginx目录

unzip -d /usr/local/ nginx-1.21.6.zip
cd /usr/local/nginx-1.21.6/

2.编译安装nginx

./configure --prefix=/home/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-openssl=/usr/local/gmssl

make -j4 &&sudo make install

3.创建nginx的软链接,并验证nginx版本

ln -sv /home/nginx/sbin/nginx /usr/sbin
nginx -V

Nginx安装成功参考如下截图
在这里插入图片描述
至此,GmSSL、国密Nginx安装完成

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

Nginx配置

nginx开机启动

1.配置 nginx 开机自启,创建 /etc/systemd/system/nginx.service 的服务文件

sudo vim /etc/systemd/system/nginx.service

#添加如下内容:
[Unit]
Description=Nginx HTTP Server
After=network.target

[Service]
Type=forking
ExecStart=/home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf
ExecReload=/home/nginx/sbin/nginx -s reload
ExecStop=/home/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

2.保存文件,重新加载系统服务配置文件,并设置开机启动Nginx服务

systemctl daemon-reload
systemctl start nginx
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 结尾的子配置文件

mkdir /home/nginx/conf/conf.d

2.创建nginx配置文件

vi  /home/nginx/conf/conf.d/test.conf

#test.conf添加的配置如下
server{
        listen 443 ssl;
        server_name test.com;
        
        #国际RSA证书配置,若不需要可单独删除此部分
        ssl_certificate /usr/local/gmssl/ssl/rsa/test_rsa.crt;
        ssl_certificate_key /usr/local/gmssl/ssl/rsa/test_rsa.key;
        
        #国密证书配置,先配置签名证书,再配置加密证书                           
        ssl_certificate /usr/local/gmssl/ssl/gm/test_sign.crt;
        ssl_certificate_key /usr/local/gmssl/ssl/gm/test_sign.key;        
        ssl_certificate /usr/local/gmssl/ssl/gm/test_enc.crt;
        ssl_certificate_key /usr/local/gmssl/ssl/gm/test_enc.key;
        
        ssl_session_cache    shared:SSL:1m;  #开启缓存 大小1M
        ssl_session_timeout  5m;     # 指定客户端可以重用会话参数的时间(超时之后不可使用)
        
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        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;
        ssl_prefer_server_ciphers on;
        ssl_verify_client off;
        
        location / {
            root   html;
            index  index.html index.htm;
  
        }
}

启动nginx

ginx -c /home/nginx/conf/nginx.conf
nginx -s reload        #重新加载nginx配置

访问测试

启动Nginx后进行访问测试


http://www.kler.cn/a/379285.html

相关文章:

  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。
  • html简易流程图
  • 光耦合器的关键作用和创新---腾恩科技
  • 低代码用户中心:简化开发,提升效率的新时代
  • EJEAS S2滑雪对讲机全球发布会圆满举办,为滑雪市场注入新活力
  • 【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)
  • 【AI+教育】一些记录@2024.11.04
  • latex中公式之间的省略号
  • C++ 内存对齐:alignas 与 alignof
  • 基于Matlab 模拟停车位管理系统【源码 GUI】
  • Selenium的下载及chrome环境搭建
  • git入门教程14:Git与其他工具的集成
  • 构造有向(无向)加权图
  • 机器学习算法之回归算法
  • 来康生命科技有限公司心率监测解决方案在健身房与康养机构的应用探索
  • Docker Hub 镜像加速器
  • 鸿蒙Harmony-圆形绘制组件Circle使用详解
  • 基于python的机器学习(一)—— 基础知识(Scikit-learn安装)
  • JVM 类加载器
  • 单调栈--- 分奖金
  • 开源呼叫中心系统 FreeIPCC:WebRTC 详解
  • 贪心算法习题其二【力扣】【算法学习day.18】
  • dns服务部署 作业
  • Docker:网络 Network
  • 探索Python编程:从入门到实践的全面指南
  • 海康威视监控rtsp播放