背景

目前网上的都是用的HTTP/HTTPS协议,其中HTTPS = HTTP(超文本传输协议) + SSL(安全套件字层)/TLS(传输层安全协议)

HTTP:(HyperText Transfer Protocol)超文本传输协议,相信大家都不陌生,打开浏览器就能看到。

SSL:( Secure Sockets Layer )安全套件字层。可分为两层: SSL记录协议(SSL Record Protocol)和 SSL握手协议(SSL Handshake Protocol)。

TLS :( Transport Layer Security )传输层安全协议。也分为两层 TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。

而中国的最新相关安全标准,就是要把其中的安全实现更换成国密算法。

国密SSL指的是采用国密算法(SM1/2/3/4等),符合国密标准(GM/T0024-2014和GB/T38636-2020)的安全传输协议。
简而言之,国密SSL就是SSL/TLS协议的国密版本。

国密SSL实际使用中,需要国密证书、国密U盾、国密网关/服务器、国密浏览器等互相配合,才能形成完整的落地方案。

本文集中于国密SSL的服务端与客户端相关研究。

服务端

Linux安装国密Nginx

下载地址:https://www.gmssl.cn/gmssl/Tool_Down?File=gmssl_nginx_1.8.0_b10.tar.gz

#1) 下载gmssl_nginx_1.8.0_bxx.tar.gz到/root/下#2) 解压
tar zxfm gmssl_nginx_1.8.0_bxxx.tar.gz -C /usr/local#3)修改配置
vim /usr/local/nginx/conf/nginx.conf#4)启动
cd /usr/local/nginx/sbin/  && ./nginx -c /usr/local/nginx/conf/nginx.conf

nginx.conf:
国密单向:

server
{listen 0.0.0.0:443 ssl;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:DES-CBC3-SHA:ECC-SM4-CBC-SM3:ECDHE-SM4-GCM-SM3;ssl_verify_client off;ssl_certificate /usr/local/nginx/conf/demo1.sm2.sig.crt.pem;ssl_certificate_key /usr/local/nginx/conf/demo1.sm2.sig.key.pem;ssl_certificate_key /usr/local/nginx/conf/demo1.sm2.enc.key.pem;ssl_certificate /usr/local/nginx/conf/demo1.sm2.enc.crt.pem;location /{root html;index index.html index.htm;}
}

国密双向:

server
{listen 0.0.0.0:443 ssl;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:DES-CBC3-SHA:ECC-SM4-CBC-SM3:ECDHE-SM4-GCM-SM3;ssl_client_certificate /usr/local/nginx/conf/demo1.sm2.trust;ssl_verify_client on;ssl_certificate /usr/local/nginx/conf/demo1.sm2.sig.crt.pem;ssl_certificate_key /usr/local/nginx/conf/demo1.sm2.sig.key.pem;ssl_certificate /usr/local/nginx/conf/demo1.sm2.enc.crt.pem;ssl_certificate_key /usr/local/nginx/conf/demo1.sm2.enc.key.pem;location /{root html;index index.html index.htm;}
}

证书生成导出:

https://www.gmssl.cn/gmssl/index.jsp

在GMSSL网站,国密数字证书——SM2证书,分别选择服务器、个人的证书类型,点击提交下载证书集合;
客户端证书demo1.sm2.trust 需要点击“证书链下载 -> PEM全部”下载trust类型证书

客户端

使用GMSSL SDK

https://www.gmssl.cn/gmssl/index.jsp

限制

如图,在SDK部分代码中增加了到期直接退出的机制

国密SSL整理-编程知识网