設(shè)備證書管理
云消息隊列 MQTT 版支持使用設(shè)備證書進(jìn)行客戶端的接入認(rèn)證。本文介紹如何使用CA證書簽發(fā)設(shè)備證書,并在云消息隊列 MQTT 版控制臺管理設(shè)備證書,包括查詢證書、激活或注銷證書以及刪除證書。
背景信息
設(shè)備證書是由CA根證書簽發(fā)給客戶端設(shè)備使用的數(shù)字證書,用于客戶端和服務(wù)端連接時,服務(wù)端對客戶端進(jìn)行安全認(rèn)證。認(rèn)證通過后服務(wù)端和客戶端可基于證書內(nèi)的加密密鑰進(jìn)行安全通信,若認(rèn)證不通過則服務(wù)端拒絕客戶端接入。
使用設(shè)備證書認(rèn)證時,必須保證簽發(fā)該設(shè)備證書的CA證書已在云消息隊列 MQTT 版服務(wù)端中注冊。更多信息,請參見注冊CA證書。
客戶端設(shè)備使用設(shè)備證書進(jìn)行接入認(rèn)證時,服務(wù)端會根據(jù)已注冊的CA證書驗證設(shè)備證書是否正確,若CA證書和設(shè)備證書匹配成功,則客戶端認(rèn)證通過,且系統(tǒng)會將該設(shè)備證書自動注冊到服務(wù)端中。
使用限制
僅鉑金版實例和專業(yè)版實例支持設(shè)備證書管理功能。
云消息隊列 MQTT 版僅支持對已在服務(wù)端注冊的設(shè)備證書進(jìn)行操作。
設(shè)備證書的SN序列號必須唯一。
前提條件
已獲取CA證書。
已安裝OpenSSL v1.1.1i或以上版本。
使用CA證書簽發(fā)設(shè)備證書
本操作以自簽名CA證書為例簽發(fā)設(shè)備證書,自簽名CA證書生成步驟,請參見自簽CA證書。
生成設(shè)備證書
RSA算法證書
準(zhǔn)備配置文件。
創(chuàng)建一個名稱為client.csr.cfg的文件,內(nèi)容如下:
說明[dn]
內(nèi)容需要根據(jù)您的實際需求修改。[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=client-test
創(chuàng)建一個名稱為client.crt.cfg的文件,內(nèi)容如下:
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
根據(jù)配置生成設(shè)備證書私鑰和CSR文件。
Mac:
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config <(cat client.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config client.csr.cfg
生成設(shè)備證書。
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg
ECC算法證書
準(zhǔn)備配置文件。
創(chuàng)建一個名稱為client.csr.cfg的文件,內(nèi)容如下:
說明[dn]
內(nèi)容需要根據(jù)您的實際需求修改。[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=client-test
創(chuàng)建一個名稱為client.crt.cfg的文件,內(nèi)容如下:
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
執(zhí)行如下命令,生成設(shè)備證書的私鑰client.key
openssl ecparam -out client.key -name prime256v1 -genkey
執(zhí)行如下命令,生成設(shè)備證書的client.csr
Mac:
openssl req -new -sha256 -nodes -out client.csr -key client.key -config <(cat client.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out client.csr -key client.key -config client.csr.cfg
執(zhí)行如下命令,生成設(shè)備證書。
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg
執(zhí)行如下命令,將設(shè)備證書私鑰的格式轉(zhuǎn)換為PKCS#8格式。
openssl pkcs8 -topk8 -nocrypt -in client.key -out client_pkcs8.key
重要使用代碼連接時參數(shù)
deviceKyPath
應(yīng)該填寫client_pkcs8.key 的路徑,而不是client.key。
生成設(shè)備證書的證書鏈
創(chuàng)建一個名稱為
client_chain.crt
的空的證書鏈文件。touch client_chain.crt
將設(shè)備證書內(nèi)容復(fù)制到證書鏈文件中。
cat client.crt >> client_chain.crt
將CA證書內(nèi)容復(fù)制到證書鏈文件并將其追加到設(shè)備證書內(nèi)容后面。
cat CA.crt >> client_chain.crt
您可以執(zhí)行cat client_chain.crt
命令查看服務(wù)器證書鏈內(nèi)容。
設(shè)備證書需要與簽發(fā)的CA證書先生成證書鏈,才能用于連接到服務(wù)端。
證書鏈生成實際上是將幾個證書的內(nèi)容拼接到一起,順序為子級證書內(nèi)容在上,父級證書內(nèi)容在下。
查詢設(shè)備證書
您可以查看指定實例下所有已注冊過的設(shè)備證書,或根據(jù)證書SN序列號進(jìn)行精確查找。
登錄云消息隊列 MQTT 版控制臺,并在左側(cè)導(dǎo)航欄單擊實例列表。
在頂部菜單欄選擇目標(biāo)地域,然后在實例列表中單擊實例名稱進(jìn)入實例詳情頁面。
在左側(cè)導(dǎo)航欄選擇 。
在設(shè)備證書頁面,顯示所有已在服務(wù)端注冊過的設(shè)備證書。
在設(shè)備證書列表上方的搜索框中輸入設(shè)備證書SN序列號或CA證書SN序列號查詢指定設(shè)備證書。
輸入設(shè)備證書SN序列號,查詢結(jié)果為該SN序列號對應(yīng)的唯一的設(shè)備證書。
輸入CA證書SN序列號,查詢結(jié)果為該CA證書所簽發(fā)的且已在服務(wù)端注冊的所有設(shè)備證書。
激活或注銷設(shè)備證書
您可以通過激活和注銷操作修改證書的生效狀態(tài)。證書狀態(tài)包含激活和未激活。設(shè)備證書在服務(wù)端注冊后默認(rèn)為激活狀態(tài)。
證書為激活狀態(tài):若您需要臨時禁用某個證書,可以將該證書注銷,注銷后證書不可用且狀態(tài)變?yōu)?b data-tag="uicontrol" id="uicontrol-b81-75x-ii5" class="uicontrol">未激活。
證書為未激活狀態(tài):若您要恢復(fù)某個證書,可以將該證書重新激活,激活后證書狀態(tài)變?yōu)?b data-tag="uicontrol" id="uicontrol-a23-f5p-aj0" class="uicontrol">激活。
在設(shè)備證書列表中,選擇目標(biāo)證書,在其操作列單擊注銷或激活。
刪除設(shè)備證書
刪除設(shè)備證書表示將指定的設(shè)備證書的注冊信息從服務(wù)端的存儲記錄中刪除,并非將證書內(nèi)容直接刪掉。
設(shè)備證書刪除后,客戶端使用該設(shè)備證書進(jìn)行接入認(rèn)證,如果關(guān)聯(lián)的CA證書正確并有效,該設(shè)備證書會被重新自動注冊到服務(wù)端,并通過認(rèn)證。
在設(shè)備證書列表中,選擇目標(biāo)證書,在其操作列單擊刪除。
在彈出的提示對話框中單擊確定。