锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 专题栏目
  3. Nginx专题
  4. nginx国密证书(gmssl)安装

nginx国密证书(gmssl)安装

0
  • Nginx专题
  • 发布于 2024-08-08
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

nginx 国密证书 (gmssl) 安装

安装前准备

环境: centos7 1810
安装包下载地址:https://download.csdn.net/download/weixin_45548465/87512505
本文档基于此安装包安装
安装编译包依赖:

yum install -y vim 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

若目标机无法上网,无法执行 yum,可通过手动下载安装包,rpm 执行安装,部分 rpm 安装包如下
参考文档:https://blog.csdn.net/weixin_45548465/article/details/124913456

软件安装

GMSSL 安装

  • 将安装包解压得到 GmSSL-master.zip 并上传到目标机器 / root 目录,执行命令
unzip /root/GmSSL-master.zip
cd GmSSL-master/
./config --prefix=/usr/local/gmssl
make -j4 && sudo make install
  • 查看是否安装成功
/usr/local/gmssl/bin/gmssl version

若提示找不到 libssl.so.1.1 库文件
建立软链接后解决, 我的安装目录在 / usr/local/gmssl 下,执行以下命令,可以 find 搜索下库文件,libssl.so.1.1 和 libcrypto.so.1.1

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/

在执行版本查看,确保 gmssl 安装成功

编译安装 nginx,openssl 换成 gmssl 路径

  • 上传安装包,执行命令
tar xvf nginx-1.21.6.tar.gz -C /usr/local/
vim /usr/local/nginx-1.21.6/auto/lib/openssl/conf

将全部 OPENSSL/.openssl / 修改为 OPENSSL/

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"
cd /usr/local/nginx-1.21.6/
./configure --prefix=/apps/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
  • 验证版本
ln  -sv  /apps/nginx/sbin/nginx  /usr/sbin
nginx -V

编辑主配置文件 在最后面 } 上面加上下面代码 让其支持以 conf 结尾的子配置文件

mkdir /apps/nginx/conf/conf.d
vim /apps/nginx/conf/nginx.conf
include  /apps/nginx/conf/conf.d/*.conf;
}

sm2 证书生成

创建相关文件和目录

mkdir  /usr/local/gmssl/ssl/CA   ##存放ca证书及密钥和证书请求
mkdir /usr/local/gmssl/ssl/newcerts   ##存放新签署证书的目录
touch /usr/local/gmssl/ssl/index.txt    #签署证书的数据记录文件,下面会生成index这个文件
touch /usr/local/gmssl/ssl/serial     #新证书签署号记录文件下,下面会生成serial这个文件
touch /usr/local/gmssl/ssl/crlnumber        # 吊销证书用,下面会生成这个文件
echo '01' > /usr/local/gmssl/ssl/serial    #给文件一个初始号
echo '01' > /usr/local/gmssl/ssl/crlnumber   #给文件一个初始号

vim /usr/local/gmssl/ssl/openssl.cnf
dir             = /usr/local/gmssl/ssl/     ##修改默认工作目录
private_key     = $dir/CA/rootca.key          ##根ca私钥存放路径
certificate     = $dir/CA/rootcasm2.cer       ##根ca公钥存放路径

添加 [v3enc_req] 参数

[ v3enc_req ]
basicConstraints = CA:FALSE
keyUsage = keyAgreement, keyEncipherment, dataEncipherment

生成证书,注意修改生成证书的组织及域名(根据检查机构要求修改,)

gmssl ecparam -genkey -name SM2 -out /usr/local/gmssl/ssl/CA/rootca.key
gmssl req -new -x509 -sm3 -key  /usr/local/gmssl/ssl/CA/rootca.key  -out  /usr/local/gmssl/ssl/CA/rootcasm2.cer -days 10000 -subj '/C=CN/O=HUB/OU=XINING_SM2'
gmssl ecparam -genkey -name SM2 -noout -out /usr/local/gmssl/ssl/CA/server.key
gmssl req -new -SM3 -key /usr/local/gmssl/ssl/CA/server.key -out /usr/local/gmssl/ssl/CA/server.csr -subj '/C=CN/O=HUB/OU=XINING_SM2/CN=www.test.com'
cd /usr/local/gmssl/ssl/CA/
gmssl x509 -req -SM3 -days 3650 -in server.csr -extfile ../openssl.cnf -extensions v3_req -CA rootcasm2.cer -CAkey rootca.key -set_serial 1000000001 -out server.cer
gmssl ecparam  -genkey -name SM2 -noout -out server_en.key
gmssl req -new -SM3 -key server_en.key -out server1.csr -subj '/C=CN/O=HUB/OU=XINING_SM2/CN=www.test.com'
gmssl x509 -req -SM3 -days 3650 -in server1.csr -extfile ../openssl.cnf -extensions v3enc_req -CA rootcasm2.cer -CAkey rootca.key -set_serial 1000002001 -out server_en.cer
gmssl ecparam -genkey -name SM2 -noout -out client.key
gmssl req -new -key client.key -out client.req -subj "/C=CN/O=HUB/OU=XINING_SM2/CN=client"
gmssl x509 -req -SM3 -days 3650 -in client.req -extfile ../openssl.cnf -extensions v3_req -CA rootcasm2.cer -CAkey rootca.key -CAcreateserial  -out client.cer
gmssl ecparam -genkey -name SM2 -noout -out client_en.key
gmssl req -new -key client_en.key -out client_en.req -subj "/C=CN/O=HUB/OU=XINING_SM2/CN=client"
gmssl x509 -req -SM3 -days 3650 -in client_en.req -CA rootcasm2.cer -extfile ../openssl.cnf -extensions v3enc_req -CAkey rootca.key -CAcreateserial  -out client_en.cer

nginx 配置

  • 创建配置文件
vim  /apps/nginx/conf/conf.d/ssl.conf

修改配置文件,代理地址根据实际情况修改

server{
        listen 443 ssl;
        ssl_certificate /usr/local/gmssl/ssl/CA/server.cer;
        ssl_certificate_key /usr/local/gmssl/ssl/CA/server.key;
        ssl_certificate /usr/local/gmssl/ssl/CA/server_en.cer;
        ssl_certificate_key /usr/local/gmssl/ssl/CA/server_en.key;


        ssl_session_cache    shared:SSL:1m;  #开启缓存 大小1M
        ssl_session_timeout  5m;     # 指定客户端可以重用会话参数的时间(超时之后不可使用)
        
        #ssl_verify_client on;
        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;
        location / {
                proxy_pass   http://192.168.190.178:8080;
                proxy_redirect default;      
                  }
}
  • 启动 nginx
nginx -c /apps/nginx/conf/nginx.conf
nginx -s reload

如果要代理多个服务,可以在 conf.d 目录下创建多个 conf 文件 (格式为. conf), 如 ssl6002.conf
每个 conf 文件端口不可冲突。证书可以使用同一证书,也可以重新产生新的 sm2 证书,指定新的证书

标签: #软件开发 1171
相关文章

Nginx部署前端Vue项目 2024-09-26 17:57

在使用Nginx部署前端Vue项目时,我们主要关注的是如何高效地将静态资源(HTML、CSS、JavaScript、图片等)提供给客户端浏览器。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Nginx作为一个高性能的HTTP和反向代理服务器,非常适合用于静态资源的托管。以下将

Nginx+Tomcat负载均衡、反向代理 2024-09-28 15:11

目录 一、代理 1.概述 二、Nginx反向代理 1.七层反向代理 - 动静分离

Centos下安装nginx步骤解析 2024-08-19 16:06

最近研究LNMP,首先要在linux下配置nginx服务器,话不多说,上步骤 1、编译环境gcc g++ 开发库之类的需要提前装好   yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2、首先安装PC

Nginx 反向代理和负载均衡 2024-08-19 14:21

❤之前粗略的学习了一下nginx,也能够简单的进行使用,但时间长了难免就会出现遗忘,遇到命令啥的有时候还得去网上搜,索性就自己整理了一份,以后看起来也比较方便。有什么不对的地方还请大家多多指正。 目录 一、nginx 简介 1、nginx 概述 2、正向代理 3、反向代理 4、负载均衡<

nginx: [emerg] getpwnam(“nginx“) failed in /etc/nginx/nginx.conf:1 2024-08-13 17:01

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 在 Nginx 配置文件(/etc/nginx/nginx.conf)中出现错误信息 “ngin

隐藏nginx响应头中的server信息(HTTP服务器版本信息泄漏) 2024-08-13 13:40

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 安全审计中有时会有 漏洞名称 HTTP 服务器版本信息泄漏 漏洞描述 目标服务器

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.