国密SSL整理

2023年 8月 22日 75.7k 0

背景

目前网上的都是用的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

下载地址:nginx.org/download/ng…

#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

PS:截至目前(2023-08-06)需要使用gmssl-openssl自行编译,详见 www.gmssl.cn/gmssl/index…

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;
  }
}

证书生成导出:

www.gmcrt.cn/gmcrt/index…

在GMSSL网站,国密数字证书——SM2证书,分别选择服务器、个人的证书类型,点击提交下载证书集合;

客户端证书demo1.sm2.trust 需要点击“证书链下载 -> PEM全部”下载trust类型证书

客户端

使用GMSSL SDK

www.gmssl.cn/gmssl/index…

限制

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

免费版本每年年底失效,程序会自动退出,需更新库,重新链接。请勿用于正式/生产环境,后果自负。

具体代码:

image.png

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论