搭建商用密码 HTTPS服务——真正全网最完整方案
一、准备工作:
环境:Linux
系统版本:CentOS7 64位
在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel
安装命令:
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
二、下载所需资源
采用开源国密算法,由江南天安发布的tassl,和改造后的Nginx。项目地址如下:
https://github.com/jntass/TASSL-1.1.1b
https://github.com/jntass/Nginx_Tassl
Nginx_Tassl 2020年6月版本有误,后面解释。
这个是可用的版本
三、安装TASSL 和 Nginx
1.首先在linux系统中安装TASSL
(1) 安装过程
tar xvf TASSL-1.1.1b-0.8.tar.gz
cd TASSL-1.1.1b-0.8
chmod u+x ./config
./config --prefix=/root/lib_r/tassl
make
make install
(2) 运行、测试过程
进入安装目录,除了标准的openssl库和头文件外,还会有tassl_demo的例子目录
cd /root/lib_r/tassl/tassl_demo
a) cert目录:
包含生成测试证书的脚本gen_sm2_cert.sh
生成测试证书目录certs
./ gen_sm2_cert.sh
b) crypto目录:
包含测试国密算法的示例进行编译测试
./mk.sh
c) ssl目录:
包含国密ssl通讯的客户端和服务端进行编译测试
./mk.sh
d)运行成功后
/root/lib_r/tassl/tassl_demo/cert/certs 目录下应有如下证书
2.安装Nginx服务器
(1) 安装过程
解压文件
yum install -y unzip zip
unzip Nginx_Tassl.zip
赋予权限
chmod 777 -R Nginx_Tassl
进入Nginx_Tassl目录,运行设置和编译安装命令
./configure --with-http_ssl_module --with-stream --with-stream_ssl_module --with-openssl=/root/lib_r/tassl --prefix=/root/nginx
make & make install
安装完成后,赋予权限
chmod 777 -R /root
修改Nginx配置
cd /root/nginx/conf
vi nginx.conf
根据图片修改内容
ssl_certificate /root/lib_r/tassl/tassl_demo/cert/certs/SS.crt; #/签名证书/
ssl_certificate_key /root/lib_r/tassl/tassl_demo/cert/certs/SS.key; #/签名私钥/
ssl_enc_certificate /root/lib_r/tassl/tassl_demo/cert/certs/SE.crt; #/加密证书/
ssl_enc_certificate_key /root/lib_r/tassl/tassl_demo/cert/certs/SE.key; #/加密私钥/
(2) 启动Nginx
cd /root/nginx/sbin
./nginx
查看nginx状态
ps -ef | grep nginx
如图显示则启动成功
关闭nginx
./nginx -s stop
重启nginx
./nginx -s reload
(3) 可能出现的问题
2020年6月作者提供的资源,可能由于未更新全部资源,导致编译时出现如下问题并导致编译失败。
error: implicit declaration of function ‘SSL_CTX_use_enc_certificate_file’ [-Werror=implicit-function-declaration]
ngx_event_openssl.c文件中的函数SSL_CTX_use_enc_certificate_file未在头文件声明。
所以编者下载了2019年12月的Nginx_Tassl资料后成功编译并安装。
这个是可用的版本
四、下载密信浏览器或者360浏览器进行测试
(1) 密信浏览器
下载地址:https://www.mesince.com/zh-cn/browser
如果第一次连接失败,那么密信浏览器会尝试国际算法,导致以后的连接都会使用国际算法,无法成功。此时需要在浏览器设置中,清楚浏览数据,进行清楚所有的数据,那么浏览器在下一次再进行连接时,会首先尝试国密算法。
(2) 360浏览器
下载地址:https://browser.360.cn/se/ver/gmzb.html
360国密浏览器版本目前较多。而且和新版本的Windows 10系统,会偶发性的导致系统重启。 而且360要求自己添加根证书,如果没有添加会导致SSL握手完成后显示证书不正确。 添加跟证书方法:将根证书放在ctl.dat文件中,然后把此文件放在%appdata%/360se6\Application\User Data\Default\ctl目录中, 注意:上面从"User Data\Default\ctl"的目录并不存在,需要手工创建。 经过多次测试,目前可以添加根证书生效的版本360_mini_installer_sm_7.exe,已经附件到另一个仓库中https://github.com/jntass/GM_BROWERS 而且我们的测试环境是Windows 7系统。
(3)访问 https://ip 即可
下图是使用密信浏览器的截图,360浏览器一直让win10系统重启。
楼主踩坑踩了几十个,翻阅了大量资料才终于成功,分享给大家,希望我国技术尽快超越美帝。
早日实现共同富裕,世界人民大团结万岁!