说明:因linux版的nginx默认编译是不带有SSL协议的,需要编译的时候增加该模块,又因为国际版的OpenSSL不支持国密,但是现在又要求需要配置多张国密证书。试过很多网上的各种解决办法都是让安装国密GMSSL,但是因为centos7已经安装有国际的OpenSSL,所以再安装多一个GMSLL的时候中途老出错,最后干脆直接不安装GMSSL,直接编译nginx的时候就选择GMSSL的源码进行编译。
1、到官网下载GMssl
参考:GitHub - guanzhi/GmSSL: 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱 下载安装包GmSSL-master.zip
解压:unzip? GmSSL-master.zip
2、到官网下载nginx
参考:nginx news 下载安装包
nginx-1.22.0.tar.gz
进入解压包进行相关编译安装
cd /usr/local/nginx-1.22.0/
#--with-openssl= 这个是解压后的GMSSL源码地址
./configure --prefix=/usr/local/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-master
make
make install
3、配置nginx证书
server{
listen 443 ssl;
ssl_certificate /usr/local/nginx/xt.pem;
ssl_certificate_key /usr/local/nginx/xt.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://172.16.100.1;
proxy_redirect default;
}
}
4、启动nginx
cd /usr/local/nginx/bin
./nginx
其他nginx操作 查询nginx安装目录 where is nginx 进入安装目录 cd /usr/local/nginx/sbin
启动nginx ./nginx? 重启nginx ./nginx -s reload?
?关闭 ./nginx -s stop
5、访问网站
?
|