國密SM2 Https服務器搭建--全網最完整方案

在密碼協議層面,國密標準定義了sm2密鑰交換協議、IPSec技術規範、SSL 技術規範三個密碼協議。在實際應用系統中爲保障系統完整性、保密性、不可抵賴性三方面,應採用規範協議實現安全性保障,不要採用自定義密碼協議。

本文通過江南天安開源國密openssl 和 360國密瀏覽器,實現了國密SM2 HTTPS,可以基於這個框架開發安全應用。

商密

國家密碼管理局相關標準國密算法爲sm(商密)系列,下面三種算法最常用

- sm2 公鑰算法

- sm3 哈希算法

- sm4 對稱分組加密算法

和國際算法對應,sm2對應RSA,sm3對應sha256,sm4對應AES。根據國密標準要求,應用系統中應該採用國密算法進行信息系統安全性保護,並且採用的協議應儘量使用國家密碼管理局審覈的協議。

在密碼協議層面,國密標準定義了sm2密鑰交換協議、IPSec技術規範、SSL技術規範三個密碼協議。在實際應用系統中爲保障系統完整性、保密性、不可抵賴性三方面,用戶如果採用自定義協議,保證自定義協議是採用國密算法的,但協議的安全性以及整套系統的安全性,還是需要進行評估認證。因此建議在系統中採用國密IPSec和SSL 實現安全性保障。

目前,IPSec 和 SSL 產品形態是一臺網關硬件,部署在資源前端,實現用戶的身份認證和資源的防護。

我們也可以搭建國密算法的https服務器,測試國密協議。

國密HTTPS

能夠進行測試的國密https站點:

- 中國銀行 https://ebssec.boc.cn/

- 沃通 https://sm2test.ovssl.cn/

支持國密的瀏覽器

- 360瀏覽器 v10

- 密信瀏覽器

360 瀏覽器訪問中國銀行,能夠執行國密標準,驗證國密證書。

訪問沃通網站,360瀏覽器不能很好執行國密算法,根據沃通網站的特點,通過兼容TLSv1.2實現。

密信瀏覽器訪問中國銀行,提示ERR_CERT_AUTHORITY_INVALID,說明根證書沒有添加到密信瀏覽器的信任區中,請沃通或密信瀏覽器的開發人員注意預置國密批准的sm2運行CA證書。

密信訪問沃通,能成功實現sm2協議。但沃通的測試服務證書不是國密局簽發sm2根證書。

搭建SM2 HTTPS服務

採用開源國密算法,由江南天安發佈的tassl,和改造後的Nginx。項目地址如下:

https://github.com/jntass/TASSL-1.1.1b

https://github.com/jntass/Nginx_Tassl

按readme編譯TASSL 和 Nginx。

出現下面問題:

./openssl: /lib64/libssl.so.1.1: version `OPENSSL_1_1_1b' not found (required by ./openssl)

解決辦法:

export LD_LIBRARY_PATH=/root/lib_r/tassl/lib/:$LD_LIBRARY_PATH

在/root/lib_r/tassl/bin目錄下,運行./openssl version,輸入tassl

OpenSSL 1.1.1b Tassl 0.8  27 Nov 2019

運行tassl 生成證書demo,腳本路徑/root/lib_r/tassl/tassl_demo/cert/gen_sm2_cert.sh,證書路徑如下:

sh-4.4# ls
CA.crt    CA.pem    CASM2.pem  CE.key  CS.crt  CS.pem  SE.key  SS.crt  SS.pem
CA.key    CA.srl    CE.crt       CE.pem  CS.key  SE.crt  SE.pem  SS.key

配置Nginx的安裝路徑/root/nginx,配置文件/root/nginx/conf/nginx.conf,指明服務器證書和私鑰。

配置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; #/加密私鑰/

配置360瀏覽器,配置信任證書

C:\Users\wsn\AppData\Roaming\360se6\User Data\Default\ctl\ctl.dat將

tassldemo/certs/CA.crt文件中的內容保存在ctl.dat文件中。

不設置信任根

設置信任根

ctl.dat文件路徑

雖然瀏覽器和服務器測試通過,但是瀏覽器沒有執行服務端證書覈驗,意味着服務端仿冒、釣魚網站等問題。

還留有國密客戶端雙向認證沒有做。

參考資料

1、大寶CA doubleCA https://doubleca.com/test_toIndexPage.action

2、國密服務器開發 https://github.com/mrpre/atls 

3. TLS/SSL 協議詳解 (29) 國密SSL協議 (代碼見參考文獻2)https://blog.csdn.net/mrpre/article/details/78015580

4.國密SSL協議開發總結(附報文詳細分析)https://blog.csdn.net/weixin_37569048/article/details/88538473 

5.gmssl server與360國密瀏覽器通信-gmssl返回Decrypt Error https://github.com/guanzhi/GmSSL/issues/940

6.gmssl s_server -gmtls 怎麼指定雙證書 https://github.com/guanzhi/GmSSL/issues/697

7.國密GMSSL http://gmssl.org/

8.GmSSL證書生成及驗證C/S通信雙向認證 https://blog.csdn.net/xiejianjun417/article/details/90768899

9. GmSSL 安裝方法 https://blog.csdn.net/chhlilt/article/details/105038966

創建國密CA

國密瀏覽器實現方案(測試網址) https://blog.csdn.net/w277608109/article/details/98116110

1. https://www.cnblogs.com/leehm/p/12264351.html

2.gmssl sm2 http://gmssl.org/docs/sm2.html

3.X509 證書的 SKID/AKID 字段 https://www.cnblogs.com/efzju/p/4976144.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章