服務(wù)器證書管理
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
服務(wù)器證書用于客戶端認證服務(wù)端,服務(wù)器證書需要由您自行購買或自行簽發(fā)并托管至阿里云數(shù)字證書管理服務(wù)。本文為您介紹如何生成并使用服務(wù)器證書。
服務(wù)器證書使用流程
使用限制
僅鉑金版實例和專業(yè)版實例支持服務(wù)器證書管理功能。
前提條件
已獲取CA證書。
已安裝OpenSSL v1.1.1i或以上版本。
步驟一:使用CA證書簽發(fā)服務(wù)器證書
您可以向權(quán)威證書頒發(fā)機構(gòu)購買服務(wù)器證書,也可以使用CA證書簽發(fā)服務(wù)器證書,CA證書獲取方式,請參見自簽CA證書。
RSA算法證書
在安裝好的OpenSSL路徑下創(chuàng)建配置文件。
創(chuàng)建一個名稱為server.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=mqtt-test.xxx.aliyuncs.com
創(chuàng)建一個名稱為server.crt.cfg的文件,內(nèi)容如下:
說明[alt_names]
可以填寫您自定義的域名。如果您使用自定義域名,則需要自行將自定義域名CNAME到云消息隊列 MQTT 版服務(wù)提供的域名。若您不需要使用自定義域名,
[alt_names]
直接填寫為云消息隊列 MQTT 版提供的域名。例如:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
。若您需要在多個Region的不同實例使用同一個服務(wù)器證書,域名填寫可以使用通配符,例如:DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
執(zhí)行如下命令生成服務(wù)器證書的私鑰和CSR文件。
Mac:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cfg
執(zhí)行如下命令將服務(wù)器證書私鑰的格式轉(zhuǎn)換為PKCS#8格式。
openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key
轉(zhuǎn)換后的證書私鑰為
server_pkcs8.key
,您可以執(zhí)行cat server_pkcs8.key
命令查看,示例如下:重要在進行步驟二:托管服務(wù)器證書后續(xù)操作時,需要上傳此步驟生成的服務(wù)器證書私鑰。
-----BEGIN PRIVATE KEY----- MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALaDOET1McZD0hV/ ma1YlSZjim00rVwrdXefqOHXWEqm8/HxZ3iWmKN/jGWW1aAoYFRAg0CNar1eDap4 ***** ***** ***** PLX2WlXAXggKZvpozkig/J6klAN8pVvwM4BPgJDLk+hllM8MowOxlNjoHsI34lAQ g17SUS1ERIK+ -----END PRIVATE KEY-----
執(zhí)行如下命令生成服務(wù)器證書 。
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg
生成的服務(wù)器證書為
server.crt
。執(zhí)行如下命令生成服務(wù)器證書鏈。
創(chuàng)建一個名稱為
server_chain.crt
的空的證書鏈文件。touch server_chain.crt
將服務(wù)器證書內(nèi)容復(fù)制到證書鏈文件中。
cat server.crt >> server_chain.crt
將CA證書內(nèi)容復(fù)制到證書鏈文件并追加到服務(wù)器證書內(nèi)容后面。
cat CA.crt >> server_chain.crt
您可以執(zhí)行
cat server_chain.crt
命令查看服務(wù)器證書鏈內(nèi)容,證書鏈的內(nèi)容格式如下:重要在進行步驟二:托管服務(wù)器證書后續(xù)操作時,需要上傳此步驟生成的服務(wù)器證書鏈。
-----BEGIN CERTIFICATE----- xxx 服務(wù)器證書內(nèi)容 xxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- xxx CA證書內(nèi)容 xxx -----END CERTIFICATE-----
ECC算法證書
在安裝好的OpenSSL路徑下創(chuàng)建配置文件。
創(chuàng)建一個名為server.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=mqtt-test.xxx.aliyuncs.com
創(chuàng)建一個名稱為server.crt.cfg的文件,內(nèi)容如下:
說明[alt_names]
可以填寫您自定義的域名。如果您使用自定義域名,則需要自行將自定義域名CNAME到云消息隊列 MQTT 版服務(wù)提供的域名。若您不需要使用自定義域名,
[alt_names]
直接填寫為云消息隊列 MQTT 版提供的域名。例如:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
。若您需要在多個Region的不同實例使用同一個服務(wù)器證書,域名填寫可以使用通配符,例如:DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
生成服務(wù)器證書的私鑰server.key
openssl ecparam -out server.key -name prime256v1 -genkey
生成服務(wù)器證書的server.csr
Mac:
openssl req -new -sha256 -nodes -out server.csr -key server.key -config <(cat server.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out server.csr -key server.key -config server.csr.cfg
由ca證書簽發(fā)服務(wù)器證書
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg
執(zhí)行如下命令將服務(wù)器證書私鑰的格式轉(zhuǎn)換為PKCS#8格式,轉(zhuǎn)換后的證書私鑰為
server_pkcs8.key
。openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key
重要在進行步驟二:托管服務(wù)器證書后續(xù)操作時,需要上傳此步驟生成的服務(wù)器證書私鑰。
執(zhí)行如下命令生成服務(wù)器證書鏈。
創(chuàng)建一個名稱為
server_chain.crt
的空的證書鏈文件。touch server_chain.crt
將服務(wù)器證書內(nèi)容復(fù)制到證書鏈文件中。
cat server.crt >> server_chain.crt
將CA證書內(nèi)容復(fù)制到證書鏈文件并追加到服務(wù)器證書內(nèi)容后面。
cat CA.crt >> server_chain.crt
重要在進行步驟二:托管服務(wù)器證書后續(xù)操作時,需要上傳此步驟生成的服務(wù)器證書鏈。
步驟二:托管服務(wù)器證書
您需要將簽發(fā)的服務(wù)器證書托管至阿里云證書管理服務(wù)控制臺,托管后才能在云消息隊列 MQTT 版控制臺查看并啟用服務(wù)器證書。
服務(wù)器證書支持RSA,ECC算法。
若您需要自定義域名,可在證書中添加域名,并通過CNAME(Canonical Name)指向云消息隊列 MQTT 版實例的接入點域名。
登錄云消息隊列 MQTT 版控制臺,并在左側(cè)導(dǎo)航欄單擊實例列表。
在頂部菜單欄選擇目標地域,然后在實例列表中單擊實例名稱進入實例詳情頁面。
在左側(cè)導(dǎo)航欄選擇
,然后在頁面左上角單擊創(chuàng)建證書。系統(tǒng)將自動跳轉(zhuǎn)到阿里云證書管理服務(wù)控制臺的SSL證書管理頁面。
在SSL證書管理頁面,單擊上傳證書。在彈出的上傳證書面板中填寫相關(guān)參數(shù)然后單擊確定。
證書標準:選擇國際標準。
證書文件:上傳步驟一:使用CA證書簽發(fā)服務(wù)器證書中生成的服務(wù)器證書鏈文件
server_chain.crt
,或?qū)⒆C書鏈內(nèi)容復(fù)制到文本框中。證書私鑰:上傳步驟一:使用CA證書簽發(fā)服務(wù)器證書中生成的轉(zhuǎn)換格式后的證書私鑰文件
server_pkcs8.key
,或?qū)⒆C書私鑰內(nèi)容復(fù)制到文本框中。證書鏈:請勿在該參數(shù)下上傳證書鏈文件或填寫證書鏈文件內(nèi)容,否則會導(dǎo)致證書認證失敗。
步驟三:使用服務(wù)器證書啟動服務(wù)
使用服務(wù)器證書啟動服務(wù),啟動過程中客戶端會斷開連接,請您謹慎操作。
如果證書錯誤會導(dǎo)致服務(wù)短暫不可用。
登錄云消息隊列 MQTT 版控制臺,并在左側(cè)導(dǎo)航欄單擊實例列表。
在頂部菜單欄選擇目標地域,然后在實例列表中單擊實例名稱進入實例詳情頁面。
在左側(cè)導(dǎo)航欄選擇
。單擊雙向認證,在彈出的對話框中選擇指定的服務(wù)器證書,并在其操作列單擊啟動服務(wù)
啟動服務(wù)會重啟云消息隊列 MQTT 版實例,重啟時間預(yù)計5~10分鐘,重啟后客戶端即可使用服務(wù)器證書做服務(wù)端認證。
啟動服務(wù)后,8883端口將開啟雙向認證,同時關(guān)閉單向認證。
在彈出的提示對話框中仔細閱讀提示信息并單擊確認。
如果您想要回退到單向認證,可以單擊單向認證,在彈出的提示對話框單擊確認,等待服務(wù)器重啟完成即可。