概要
Message Queue for MQTT は、中国商用暗号アルゴリズム(SM2、SM3、および SM4)をサポートしています。このサービスは、2 つの標準に準拠しています。1 つはデュアル証明書型の SM 通信プロトコルである GB/T 38636-2020 Transport Layer Cryptography Protocol (TLCP)、もう 1 つは TLS 1.3 におけるシングル証明書型 SM モードを定義する RFC 8998 です。カスタム証明書機能を通じて SM 証明書をアップロード・利用することで、SM 機能を有効化できます。
前提条件
Tongsuo SM 実装ライブラリをインストールします。
注意事項
SM 機能をご利用になるには、チケットを送信して有効化をリクエストしてください。
SM 機能は、Message Queue for MQTT の Platinum Edition および Professional Edition インスタンスでのみサポートされています。
SM 機能は、以下のリージョンでご利用いただけます:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (ウランチャブ)、中国 (張家口)、中国 (広州)、シンガポール、ドイツ (フランクフルト)。
操作手順
SM 機能の使用方法は、カスタム 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
発行されたサーバー側の署名証明書および暗号化用デュアル証明書を、Alibaba Cloud Certificate Management Service コンソールにアップロードします。
左側のナビゲーションウィンドウで、証明書管理 > SSL 証明書管理 V2.0 を選択します。アップロードされた証明書の管理 タブで、証明書のアップロード をクリックします。
証明書アルゴリズム で、SM2 アルゴリズム を選択します。
任意の 証明書名 を入力します。
証明書ファイル に、
server_sign.crtファイルをアップロードします。証明書秘密鍵 に、
server_sign.keyファイルをアップロードします。暗号化された証明書 に、
server_enc.crtファイルをアップロードします。暗号化された秘密鍵 に、
server_enc.keyファイルをアップロードします。
Message Queue for MQTT コンソールで CA 証明書(
ca.crt)をアップロードします。左側のナビゲーションウィンドウで、Certificate Management > CA Certificate を選択し、Register Certificate をクリックします。
Verification Certificate をアップロードします。
CA Certificate をアップロードします。
クライアント証明書の構成については、コードデモをご参照ください。以下のスニペットは、主要な設定項目を示しています:
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";