功能概述
雲Message QueueTT 版目前已支援中國商用密碼演算法(SM2/SM3/SM4),支援 GB/T 38636-2020 TLCP 標準,即雙認證國密通訊協定,同時也支援 RFC 8998,即TLS 1.3+ 國密單認證模式。目前可以在自訂認證功能裡面,上傳和使用國密認證來啟動國密功能。
前提條件
已安裝國密實現庫Tongsuo。
注意事項
如需使用國密功能,請提交工單進行申請。
目前雲Message QueueTT 版僅鉑金版和專業版執行個體支援國密功能。
目前支援國密功能的地區:杭州、上海、北京、深圳、烏蘭察布、張家口、廣州、新加坡、法蘭克福。
使用說明
國密功能的使用流程和普通的基於自訂x.509認證雙向認證的功能流程基本一致,區別在於認證的製作命令和演算法差異,具體教程可以參考Tongsuo官方文檔認證使用說明。
認證製作
假設機器上已安裝Tongsuo路徑在/home/admin/tongsuo,如下圖所示:
$ll /home/admin/tongsuo total 16 drwxrwxr-x 2 admin admin 4096 Dec 16 14:28 bin drwxrwxr-x 3 admin admin 4096 Dec 16 14:28 include drwxrwxr-x 5 admin admin 4096 Dec 16 14:28 lib64 drwxrwxr-x 5 admin admin 4096 Dec 16 14:28 ssl認證製作指令碼和配置參考Tongsuo官方文檔認證中mkcert.sh、ca.conf、subca.conf。其中mkcert.sh指令碼中注意修改Tongsuo的安裝目錄,且執行前需要設定環境變數如下:
export LD_LIBRARY_PATH=/home/admin/tongsuo/lib64:$LD_LIBRARY_PATH export PATH=/home/admin/tongsuo/bin:$PATH執行指令碼後會產生相應認證列表:
$ll /home/admin/sm2-tlcp total 104 -rw-rw-r-- 1 admin admin 3328 Jan 16 10:36 ca.cnf -rw-rw-r-- 1 admin admin 709 Jan 16 10:45 ca.crt -rw-rw-r-- 1 admin admin 513 Jan 16 10:45 ca.csr -rw------- 1 admin admin 241 Jan 16 10:45 ca.key -rw-rw-r-- 1 admin admin 1422 Jan 16 10:45 chain-ca.crt -rw-rw-r-- 1 admin admin 1409 Jan 16 13:55 client_enc.crt -rw-rw-r-- 1 admin admin 513 Jan 16 10:45 client_enc.csr -rw------- 1 admin admin 241 Jan 16 10:45 client_enc.key -rw-rw-r-- 1 admin admin 1413 Jan 16 13:55 client_sign.crt -rw-rw-r-- 1 admin admin 517 Jan 16 10:45 client_sign.csr -rw------- 1 admin admin 241 Jan 16 10:45 client_sign.key drwxrwxr-x 2 admin admin 4096 Jan 16 10:45 crl drwxrwxr-x 2 admin admin 4096 Jan 16 10:45 db -rw-rw-r-- 1 admin admin 2393 Jan 16 10:45 mkcert.sh drwxrwxr-x 2 admin admin 4096 Jan 16 10:45 newcerts drwxrwxr-x 2 admin admin 4096 Jan 16 10:45 private -rw-rw-r-- 1 admin admin 700 Jan 16 10:45 server_enc.crt -rw-rw-r-- 1 admin admin 513 Jan 16 10:45 server_enc.csr -rw------- 1 admin admin 241 Jan 16 10:45 server_enc.key -rw-rw-r-- 1 admin admin 700 Jan 16 10:45 server_sign.crt -rw-rw-r-- 1 admin admin 517 Jan 16 10:45 server_sign.csr -rw------- 1 admin admin 241 Jan 16 10:45 server_sign.key -rw-rw-r-- 1 admin admin 4047 Jan 16 10:37 subca.cnf -rw-rw-r-- 1 admin admin 713 Jan 16 10:45 subca.crt -rw-rw-r-- 1 admin admin 509 Jan 16 10:45 subca.csr -rw------- 1 admin admin 241 Jan 16 10:45 subca.key
將簽發的服務端簽名和加密雙認證託管至阿里雲認證管理服務控制台,操作步驟如下:
在左側導覽列選擇证书管理 > SSL證書管理 V2.0,在上傳證書頁簽,點擊上傳證書。
認證標準選擇國密(SM2)標準。
自訂認證名稱。
認證檔案上傳產生的server_sign.crt。
認證私密金鑰上傳產生的server_sign.key。
加密認證上傳產生的server_enc.crt。
加密私密金鑰上傳產生的server_enc.key。
在雲Message QueueTT 版控制台執行個體頁面上傳CA認證(ca.crt),操作步驟如下:
在左側導覽列選擇認證管理 > CA認證。點擊註冊認證。
上傳驗證認證。
上傳CA認證。
用戶端認證設定參考代碼demo,主要設定程式碼範例:
MQTTAsync_SSLOptions ssl =MQTTAsync_SSLOptions_initializer; // 分別填寫 CA認證、用戶端認證、用戶端私密金鑰 ssl.trustStore = "/home/admin/sm2-tlcp/chain-ca.crt"; ssl.enable_ntls = 1; ssl.sign_cert_file = "/home/admin/sm2-tlcp/client_sign.crt"; ssl.sign_key_file = "/home/admin/sm2-tlcp/client_sign.key"; ssl.enc_cert_file = "/home/admin/sm2-tlcp/client_enc.crt"; ssl.enc_key_file = "/home/admin/sm2-tlcp/client_enc.key";