Nginx配置国密HTTPS单双向认证 – 作者:hua1998

上海派拉基础产品部–张俊

环境准备

需要提供环境:

nginx服务器

centos7.5以上

用于部署gmssl/nginx

windows笔记本一台

win7/win8/win10

用于验证单向/双向;

用于设置写入证书;

360控制台账号

官网:360企业安全浏览器

注册申请:申请账号

管理后台: 登录后台

1、用户名/密码

2、如果用户名密码过期,可以重新申请账号,每个账号有三个月试用期。

360个人账号

用于登录360浏览器客户端

账号管理后台: 登录后台

1、测试账号用户名/密码:

2、客户端下载:登录后台后,在左下方点击“下载客户端”按钮。

3、账号添加:登录管理后台后,点击“用户管理”—->“添加用户”。

4、密码重置:登录管理后台后,点击“用户管理”,选择指定用户,点击”重置密码“即可在个人端登录。

测试演示环境

https://139.xxx.xxx.72/

演示环境目前为国密单向认证方式

一、Gmssl编译安装

  • Gmssl作为openssl开源分支,其支持国密算法(sm2,sm3,sm4)以及国密证书生成的相关套件

目前编译版本基于Gmssl源码改造,以下为标准版本地址和公司实现版本。

  • gitlab地址:(已移除)

root用户登录linux主机,执行以下命令:

mkdir -p PATCH/20210312

cd PATCH/20210312

yum install git

yum groupinstall 'Development Tools' -y

#向相关开发获取GMssl源码

cd awesome-demo/GMDY/GMSSL/GmSSL-master

#预编译Gmssl,指定安装路径,指定路径可以自由指定。

./config --prefix=/usr/local/gmsslF8

#编译

make

#安装到/usr/local/gmsslF8

make install

#ld编译的时候选用gmssl本地库

export LD_LIBRARY_PATH=/usr/local/gmsslF8/lib/:$LD_LIBRARY_PATH

#查看gmssl版本信息

/usr/local/gmsslF8/bin/gmssl version

图片[1]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

二、Nginx编译安装

  • Nginx可以使用最新开源版本,需要指定gmssl的编译路径

Github: Nginx源码地址

root用户登录linux主机,执行以下命令:

cd ~/PATCH/20210312

#安装依赖包

yum install pcre pcre-devel -y

yum install zlib zlib-devel -y

#解压文件

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar -xvf nginx-1.18.0.tar.gz

cd nginx-1.18.0

#备份将要修改的文件

cp auto/lib/openssl/conf auto/lib/openssl/conf.bak

#编辑conf,将全部 $OPENSSL/.openssl/修改为$OPENSSL/

sed -i "s/$OPENSSL\/\.openssl\//$OPENSSL\//g" auto/lib/openssl/conf

#执行预处理auto/congfigure

注意如果更换gmssl目录,需要替换以下/usr/local/gmssl8

此外nginx的安装目录,尽量自定义/usr/local/nginxgmF8

cd ~/PATCH/20210312/nginx-1.18.0

./configure \

--prefix=/usr/local/nginxgmF8 \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-http_gunzip_module \

--with-http_gzip_static_module \

--with-http_random_index_module \

--with-http_secure_link_module \

--with-http_stub_status_module \

--with-http_auth_request_module \

--with-threads \

--with-stream_ssl_module \

--with-http_slice_module \

--with-mail \

--with-mail_ssl_module \

--with-file-aio \

--with-http_v2_module \

--with-openssl=/usr/local/gmsslF8 \

--with-stream

#执行安装

make

make install

/usr/local/nginxgmF8/sbin/nginx -v

图片[2]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

、国密证书生成

  • 国密证书依赖Gmssl生成对应证书CA、server、client证书。

cd ~/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA

vim cert.sh

#批量修改/usr/local/gmsslF1为实际安装路径/usr/local/gmsslF8

sed -i "s/gmsslF1/gmsslF8/g" cert.sh

#修改CN=139.196.184.72为实际服务器IP或实际域名,如为1.1.1.1,则执行如下命令

sed -i "s/139.196.184.72/1.1.1.1/g" cert.sh

#添加执行权限

chmod 0755 cert.sh

#执行生成证书

./cert.sh

期间需要输入密码,可以跳过不输入。

cert.sh文件,根据需要修改:

export LD_LIBRARY_PATH=/usr/local/gmsslF8/lib/:$LD_LIBRARY_PATH
rm -rf *.pem
rm -rf *.pfx 
# 生成CA证书
/usr/local/gmsslF8/bin/gmssl ecparam -genkey -name sm2p256v1 -text -out CA.key.pem
/usr/local/gmsslF8/bin/gmssl req -utf8 -new -key CA.key.pem -out CA.req.pem -subj "/C=CN/ST=ShangHai/L=ShangHai/O=上海派拉软件技术有限公司/CN=派拉国密CA服务器"
/usr/local/gmsslF8/bin/gmssl x509 -req -days 3650 -sm3 -in CA.req.pem -extfile openssl.cnf -extensions v3_ca -signkey CA.key.pem -out CA.crt.pem
#/usr/local/gmsslF8/bin/gmssl x509 -req -days 3650 -sm3 -in root.req -extfile openssl.cnf -extensions v3_ca -signkey root.key -out root.pem
rm -rf CA.pem
cat CA.crt.pem >>CA.pem
/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in CA.crt.pem  -inkey CA.key.pem -out CA.p12 -name CA


# Server签名证书
/usr/local/gmsslF8/bin/gmssl ecparam -name sm2p256v1 -genkey -noout -out SS.key.pem
/usr/local/gmsslF8/bin/gmssl req -utf8  -new -SM3 -key SS.key.pem -out SS.csr.pem -subj "/C=CN/ST=ShangHai/L=ShangHai/O=上海派拉软件技术有限公司/CN=139.196.184.72"
/usr/local/gmsslF8/bin/gmssl x509 -req -SM3 -days 3650 -in SS.csr.pem -extfile openssl.cnf -extensions v3_req -CA CA.crt.pem -CAkey CA.key.pem -set_serial 1000000001 -out SS.crt.pem 
rm -rf SS.pem
cat SS.crt.pem CA.crt.pem >> SS.pem
/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in SS.crt.pem -inkey SS.key.pem -out SS.p12 -name SS

# Server加密证书
/usr/local/gmsslF8/bin/gmssl ecparam -name sm2p256v1 -genkey -noout -out SE.key.pem
/usr/local/gmsslF8/bin/gmssl req -new -SM3 -key SE.key.pem -out SE.csr.pem -subj "/C=CN/ST=ShangHai/L=ShangHai/O=上海派拉软件技术有限公司/CN=139.196.184.72"
/usr/local/gmsslF8/bin/gmssl x509 -req -SM3 -days 3650 -in SE.csr.pem -extfile openssl.cnf -extensions v3enc_req -CA CA.crt.pem -CAkey CA.key.pem -set_serial 1000002001 -out SE.crt.pem 
rm -rf SE.pem
cat SE.crt.pem CA.crt.pem >> SE.pem
/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in SE.crt.pem -inkey SE.key.pem -out SE.p12 -name SE

# 客户端签名证书
/usr/local/gmsslF8/bin/gmssl ecparam -genkey -name sm2p256v1 -noout -out CS.key.pem 
/usr/local/gmsslF8/bin/gmssl req -utf8 -new -key CS.key.pem -out CS.req.pem -subj "/C=CN/ST=ShangHai/L=ShangHai/O=上海派拉软件技术有限公司/CN=139.196.184.72"
/usr/local/gmsslF8/bin/gmssl x509 -req -SM3 -days 3650 -in CS.req.pem -extfile openssl.cnf -extensions v3_req -CA CA.crt.pem -CAkey CA.key.pem -CAcreateserial  -out CS.crt.pem
rm -rf CS.pem
cat CS.crt.pem CA.crt.pem >> CS.pem
/usr/local/gmsslF8/bin/gmssl pkcs12 -export  -in CS.crt.pem -inkey CS.key.pem -out CS.p12 -name CS
#/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in CS.pem -inkey client.key -out client.p12 -name https_client

# 客户端加密证书
/usr/local/gmsslF8/bin/gmssl ecparam -genkey -name sm2p256v1 -noout -out CE.key.pem
/usr/local/gmsslF8/bin/gmssl req -utf8 -new -key CE.key.pem -out CE.req.pem -subj "/C=CN/ST=ShangHai/L=ShangHai/O=上海派拉软件技术有限公司/CN=139.xxx.xxx.xxx"
/usr/local/gmsslF8/bin/gmssl x509 -req -SM3 -days 3650 -in CE.req.pem -CA CA.crt.pem -extfile openssl.cnf -extensions v3enc_req -CAkey CA.key.pem -CAcreateserial  -out CE.crt.pem
#/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in client_en.pem -inkey client_en.key -out client_en.p12 -name https_client
rm -rf CE.pem client.pem server.pem
cat CE.crt.pem CA.crt.pem >> CE.pem

/usr/local/gmsslF8/bin/gmssl pkcs12 -export -in CE.crt.pem -inkey CE.key.pem -out CE.p12 -name CE

cat CS.crt.pem CE.crt.pem CA.crt.pem   > client.pem
cat SS.crt.pem SE.crt.pem CA.crt.pem   > server.pem


/usr/local/gmsslF8/bin/gmssl s_server -port 443 -key SS.key.pem -cert SS.crt.pem -dkey SE.key.pem -dcert SE.crt.pem -CAfile CA.crt.pem
/usr/local/gmsslF8/bin/gmssl s_client -connect localhost:443 -key CS.key.pem -cert CS.crt.pem -CAfile CA.crt.pem

openssl.cnf【cert.sh依赖文件】

cert.sh生成证书介绍:

CA签发中心

CA.key.pem

CA密钥key

CA.req.pem

CA请求文件

CA.crt.pem

CA签发证书crt格式

CA.pem

CA签发证书pem格式

CA.p12

CA签发证书p12格式

SERVER服务端

签名证书

SS.key.pem

服务器签名密钥key

SS.csr.pem

服务器签名请求文件

SS.crt.pem

服务器签名证书crt格式

SS.pem

服务器签名证书pem格式

SS.p12

服务器签名证书p12格式

加密证书

SE.key.pem

服务器加密密钥key

SE.csr.pem

服务器加密请求文件

SE.crt.pem

服务器加密证书crt格式

SE.pem

服务器加密证书pem格式

SE.p12

服务器加密证书p12格式

CLIENT客户端

签名证书

CS.key.pem

客户端签名密钥key

CS.req.pem

客户端签名请求文件

CS.crt.pem

客户端签名证书crt格式

CS.pem

客户端签名证书pem格式

CS.p12

客户端签名证书p12格式

加密证书

CE.key.pem

客户端加密密钥key

CE.req.pem

客户端加密请求文件

CE.crt.pem

客户端加密证书crt格式

CE.pem

客户端加密证书pem格式

CE.p12

客户端加密证书p12格式

服务端证书链

server.pem

服务端证书链(证书排序:签名在前,加密后,CA证书)

客户端证书链

client.pem

客户端证书链(证书排序:签名在前,加密后,CA证书最后)

四、Nginx配置国密单向https配置

1、修改配置文件

cd /usr/local/nginxgmF8/
vi conf/nginx.conf
#将光标移至最后一个“}”上一行,并将下面内容拷贝至nginx.conf

以下为配置信息:证书采用第三章节生成

server

{

listen 0.0.0.0:443 ssl;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:DES-CBC3-SHA:ECC-SM4-SM3:ECDHE-SM4-SM3:SM2-WITH-SMS4-SM3:ECDHE-SM2-WITH-SMS4-GCM-SM3;

ssl_prefer_server_ciphers on;

keepalive_timeout 70;

ssl_verify_client off;

ssl_client_certificate /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/client.pem;

ssl_certificate /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SS.crt.pem;

ssl_certificate_key /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SS.key.pem;

ssl_certificate /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SE.crt.pem;

ssl_certificate_key /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SE.key.pem;

location /

{

root html;

#add_header Guomissl 'type=2';

index index.html index.htm;

}

}

2、启动nginx

/usr/local/nginxgmF8/sbin/nginx -c /usr/local/nginxgmF8/conf/nginx.conf

成功结果截图:

图片[3]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

其他相关命令:

停止nginx /usr/local/nginxgmF8/sbin/nginx -s stop

动态加载配置文件 /usr/local/nginxgmF8/sbin/nginx -s reload

日志路径:

/usr/local/nginxgmF8/logs

图片[4]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

五、360企业版浏览器控制台配置

网站地址:360企业浏览器网站

注意:目前360企业网站开放注册,每个账号会有3个月的免费试用。如果现有账号失效,可以另行注册。

图片[5]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

1、360控制台配置root证书

1.1.登录360企业安全浏览器

打开360企业安全浏览器,点击左上角灰色图标,登录360企业安全浏览器客户端,使用账号/密码登录

1.2.管理控制台配置根证书CA

  • 网站配置根证书,用于360浏览器信任服务器证书。

登录地址:360企业安全浏览器管理控制台

账号:xxxx/xxxxx 注:账号三个月有效期,过可重新申请新的账号。申请账号

图片[6]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

点击配置根证书:

根证书为第三章节生成的CA.pem文件。

将服务器/root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CA.pem文件下载到windows本地。

图片[7]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

选择文件添加,添加CA.pem到页面:

图片[8]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

点击确定,查看证书的详细情况:

图片[9]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

访问浏览器查看效果:

图片[10]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

如果浏览器显示:

图片[11]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

可能是服务器防火墙未关导致,按照如下命令查看并关闭服务器防火墙:

1.查看防火墙是否打开:

systemctl status firewalld.service

显示下图表明防火墙已打开:

图片[12]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

2.关闭防火墙:

systemctl stop firewalld.service

显示下图说明防火墙已关闭:

图片[13]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

此时刷新360企业浏览器,可以正常显示。

2、 360控制台配置国密网关

  • 不配置国密网关,360浏览器访问时将发送tls1.2,tls1.1交易

2.1 配置网关

添加应用

图片[14]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

将网站网址填入应用设置页面

图片[15]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

添加网关设置

图片[16]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

设置网关:

图片[17]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

3、360控制台下载windows/mac/linux客户端

3.1 下载客户端

点击”下载客户端“按钮

图片[18]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

在下面页面选择对应的版本下载安装:

图片[19]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

3.2 windows安装步骤

点击安装以下下载文件:

图片[20]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

安装:

图片[21]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

安装成功即可。打开登录账号:xxx/xxx

注:登录管理后台后,点击“用户管理”,选择指定用户,点击”重置密码“,记录密码,即可在个人端登录。

图片[22]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

登录成功,即可访问网站。

六、360/密信浏览器双向认证环境整备

用于将密钥证书写入硬件key,硬件key用户国密网站访问

1、双向认证必备

  • 硬件key:目前龙脉科技的GM3000已调通。
  • 硬件驱动:需要对应厂商的硬件驱动。
  • 国密浏览器:360企业版/密信浏览器
  • windows个人计算机:用于安装国密浏览器,其他操作系统待调研。

2、证书获取

证书采用第三章节生成的证书:

CS.p12 –客户端国密签名证书

CE.p12 –客户端国密加密证书

将服务器证书下载到windows个人电脑。

3、windows个人电脑安装硬件驱动

点击文件安装

4、证书写入硬件key

解压文件夹,将硬件key插入电脑,点击运行mTokenGMAdmin.exe

图片[23]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

出现以下界面:

图片[24]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

4.1 应用的增/删

  • key中利用应用管理不同类型的证书。eg:rsa\smx

右键GM3000,创建应用,需要先认证设备。

图片[25]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

认证设备(其中认证密钥为默认填写):

图片[26]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

通过后,既可创建应用:

图片[27]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

4.2 管理应用的密钥证书

点击应用:

图片[28]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

如果需要对应用进行操作,需要登录应用

图片[29]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

登录应用,输入对应密码【此处密码为浏览器调用硬件key时输入的PIN,如有修改,请牢记】:

图片[30]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

登录成功后,即可创建容器

图片[31]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

4.3 容器中证书的导入(以国密证书为例)

国密签名证书导入CS.p12

图片[32]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

国密加密证书导入CE.p12

图片[33]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

最终配置结果:

图片[34]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

5、配置windows个人计算机

导入注册表项:

按win+R,输入regedit,查看以下键值是否正确:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Cryptography\Defaults\Provider\LongMai

注册表快照对比:

图片[35]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

七、360浏览器单向验证

此处浏览器版本,参考第四章3.1小节下载指定客户端。

输入测试账号:

用户名/密码:xxxx/xxxxx

图片[36]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

弹出非私密连接,点击继续访问【如360控制台已设置CA,此页面将不会跳出】:

图片[37]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

访问网站,网址前会提示访问方式:

图片[38]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

八、密信浏览器单向验证

windows版本:

密信浏览器下载

访问

图片[39]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

点击高级/选择继续前往

图片[40]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

显示正常页面:

图片[41]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

查看证书:

图片[42]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

确认证书算法

图片[43]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

九、Nginx国密双向https配置【客户端认证采用硬件key】

1、修改配置文件

cd /usr/local/nginxgmF8/

vi conf/nginx.conf

#将"ssl_verify_client off;" 改为"ssl_verify_client on;"

以下为nginx-server模块配置信息:证书采用第三章节生成的相关证书

2、启动nginx

/usr/local/nginxgmF8/sbin/nginx -c /usr/local/nginxgmF8/conf/nginx.conf

其他相关命令:

停止nginx /usr/local/nginxgmF8/sbin/nginx -s stop

动态加载配置文件 /usr/local/nginxgmF8/sbin/nginx -s reload

3、360浏览器双向认证

此处浏览器版本安装,参考第四章3.1小节下载指定客户端。

360浏览器登录:

输入测试账号:

用户名/密码:xxxx/xxxx图片[44]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

弹出非私密连接,点击继续访问:

图片[45]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

输入硬件key的密码,点击确定【此处密码为第五章节4.2设置的密码,默认12345678】:

?code=ZmM0MjBkODQ1MGJjNmViNjZlYzk5NDAyNmZkNmU3MWJfZ0hrbVFXYnVabXF6ekZhdG13aFUzMmxDVUFHejBqWFNfVG9rZW46Ym94Y25IRUlMdmttQXc2NE82ZVpUSmR3eE9jXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

进入网站:

?code=YzJjNDRiNTEyMjUyNTQ2ZWMyOTMwYTJmN2QyZGNkMTRfQXh3TTBPSUhrVFU2WDhHUkxIcEZHVVNyRUdrWE5LWHFfVG9rZW46Ym94Y251TVU5VW9GS2JkamZRdnN6c3U1ZEZlXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

4、密信浏览器双向验证

windows版本安装:

弹出选择证书,确认证书后,点击确定。

?code=ODA4NGE0ZDcxNTczYTgzMWY3Y2MzZmMyMzVmOWFhODBfSEdJdUoyN05ZcXkxcURvS2pUc0pNMEMyZHM3YW1PT3FfVG9rZW46Ym94Y25QelNZcDR3MHZvc1dLNEhxVmQ5dG9lXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

输入硬件key的密码,点击确定【此处密码为第五章节4.2设置的密码,默认12345678】

?code=Y2FlMTEzOTQwNTM0MmEyNWE5OTMxY2VkYTA0ZWYzMTNfOVZGRkNIZGF0cGZidllnRkNkNFhhaGZhYVE0Z0lzZXdfVG9rZW46Ym94Y25aSDVwTzl6MlhTcFNmbjZ3ekxaZndkXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

显示正常页面:

?code=NDVhMTE3YTRlNjExZDdiYjQ4MDNiMWE0MWFjZmNkYmZfSmppS0NQcHhnaGE3TEh6cThXU05Pb1VLdW9CU3JiNGdfVG9rZW46Ym94Y255SGtaWEdpbllMQkd3OEI4Mng0WVBnXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

查看证书:

图片[51]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

确认证书算法

?code=MWM5OTQxYjQ0ZTlmNjBkMzZlYTQxMjdkMWMxNjZiYmZfV01HckljekdzNVFFRzRxVGM0OEtPb0F0OUVtSHV4RWlfVG9rZW46Ym94Y254QkNPa21EQlRRU2RuUGp4WGdzVktjXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

八、Nginx支持RSA/国密双模式

  • 目前国密浏览器支持有限,为了使用户能够使用主流浏览器访问,可以设置RSA证书,方便Google、IE,firefox等浏览器的正常访问。

九、遇到问题总结

1、Gmssl命令调试出错,gmtls未支持国密签名Z值计算,目前不推荐使用命令行验证单向/双向

  • 开一个服务终端,服务器启动命令:

export LD_LIBRARY_PATH=/usr/local/gmsslF8/lib/:$LD_LIBRARY_PATH

/usr/local/gmsslF8/bin/gmssl s_server -accept 4430 \

-key /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SS.key.pem \

-cert /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SS.crt.pem \

-dkey /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SE.key.pem \

-dcert /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/SE.crt.pem \

-CAfile /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CA.crt.pem -Verify 1 \

-msg -debug -gmtls

  • 新开一个客户终端,访问命令:

export LD_LIBRARY_PATH=/usr/local/gmsslF8/lib/:$LD_LIBRARY_PATH

/usr/local/gmsslF8/bin/gmssl s_client -connect 127.0.0.1:4430 \

-key /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CS.key.pem \

-cert /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CS.crt.pem \

-dkey /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CE.key.pem \

-dcert /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CE.crt.pem \

-CAfile /root/PATCH/20210312/awesome-demo/GMDY/GMSSL/CA/CA.crt.pem \

-msg -debug -gmtls

  • 服务端认证报错:

图片[53]-Nginx配置国密HTTPS单双向认证 – 作者:hua1998-安全小百科

解决:

后期代码修复客户端工具

2、浏览器认证的时候,使用其他浏览器访问国密网站

  • 使用google浏览器访问:

?code=NGMzZGI3ODg4YmQ0MmM4MzZkNjk5YTVhZDNjZmFmZTNfQ3o4S1J6Smt4ejZZcm9Vc09UVjMwWFFCN2V0WGZIYTNfVG9rZW46Ym94Y24zOXhnblZvWFRLdEt4WWdmY3pQb210XzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

解决:

更换360国密浏览器/密信浏览器。或者nginx网关配置RSA证书。

3、客户端国密证书写入浏览器无法生效

解决:

目前国密浏览器双向认证过程,客户端无法识别软证书。需要硬件key.

4、360国密浏览器访问不是私密连接,进入后国密标签为灰色

  • 网站不是私密连接问题

?code=NjkzN2JlNjc1ZmUzMTU1YTQ1N2IwZWE5OTBlMWY3MTRfUDdPYWVyODVLMU9IajlLa1hTZmFnZlJOUTloU2NPYlhfVG9rZW46Ym94Y253WFB4NTM5MlppSlFvWkRiM3QzdWRjXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

  • 国密标签为灰色

?code=YTAzZTRiNWRkNTEwOTVlYjFjZjQ3MWVkNGRjMjY3MGFfOXhPaGtBenBpNm0yUDYzZEJMNGNuWW5objNCNWpqT2dfVG9rZW46Ym94Y25EWDFWODZXeGNmckwwdkJnUU92MGZrXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

解决: 如果网站为内网环境,则无法取消。如果为外网环境,可以参考第四章1.1节配置根证书。

5、360国密浏览器协商异常日志

tail -f /usr/local/nginxgmF8/logs/error.log

?code=ZDJhYzUxN2E1MTRhNjE3YjRiZDEzZjQ3NzE4NTE4ZWFfbXNVYWpaVk1aa2czcEQwTFgwZHB0QlZoU3hBMnVGTlNfVG9rZW46Ym94Y240ZUdLM2o2dVcyY3kwM3p0aTViZUdlXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

360打开国密网站,虽然会访问成功,但是先期会先发送TLS1.x交易,nginx这边会有相应日志。

解决:如果为外网环境,可以参考第四章2.1节配置国密网关。

修改好后可查看访问日志:

tail -f /usr/local/nginxgmF8/logs/error.log

?code=MTI1ODM3MjcyNzkwZDc5NWYwYjY2MDVjMWMzYmVmMjJfM0xueWZFeHdMMGtvdk0yZ3daSWtmZGFkMHg4eHA2dXlfVG9rZW46Ym94Y25YVTluVTBUaXRWUTFtTHNYcFNyNUJjXzE2MTk3NDgzNzU6MTYxOTc1MTk3NV9WNA

来源:freebuf.com 2021-04-30 10:16:05 by: hua1998

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论