伺服器憑證用於用戶端認證服務端,伺服器憑證需要由您自行購買或自行簽發並託管至阿里雲數位憑證管理服務。本文為您介紹如何產生並使用伺服器憑證。
伺服器憑證使用流程
使用限制
僅鉑金版執行個體和專業版執行個體支援伺服器憑證管理功能。
前提條件
已擷取CA認證。
已安裝OpenSSL v1.1.1i或以上版本。
步驟一:使用CA認證簽發伺服器憑證
您可以向權威憑證授權單位購買伺服器憑證,也可以使用CA認證簽發伺服器憑證,CA認證擷取方式,請參見自簽CA認證。
RSA演算法認證
在安裝好的OpenSSL路徑下建立設定檔。
建立一個名稱為server.csr.cfg的檔案,內容如下:
說明[dn]內容請根據您的實際情況填寫。[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建立一個名稱為server.crt.cfg的檔案,內容如下:
說明[alt_names]可以填寫您自訂的網域名稱。如果您使用自訂網域名,則需要自行將自訂網域名CNAME到雲Message QueueTT 版服務提供的網域名稱。若您不需要使用自訂網域名,
[alt_names]直接填寫為雲Message QueueTT 版提供的網域名稱。例如:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com。若您需要在多個Region的不同執行個體使用同一個伺服器憑證,網域名稱填寫可以使用萬用字元,例如:DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
執行如下命令產生伺服器憑證的私密金鑰和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
執行如下命令將伺服器憑證私密金鑰的格式轉換為PKCS#8格式。
openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key轉換後的認證私密金鑰為
server_pkcs8.key,您可以執行cat server_pkcs8.key命令查看,樣本如下:重要在進行步驟二:託管伺服器憑證後續操作時,需要上傳此步驟產生的伺服器憑證私密金鑰。
-----BEGIN PRIVATE KEY----- MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALaDOET1McZD0hV/ ma1YlSZjim00rVwrdXefqOHXWEqm8/HxZ3iWmKN/jGWW1aAoYFRAg0CNar1eDap4 ***** ***** ***** PLX2WlXAXggKZvpozkig/J6klAN8pVvwM4BPgJDLk+hllM8MowOxlNjoHsI34lAQ g17SUS1ERIK+ -----END PRIVATE KEY-----執行如下命令產生伺服器憑證 。
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg產生的伺服器憑證為
server.crt。執行如下命令產生伺服器憑證鏈。
建立一個名稱為
server_chain.crt的空的憑證鏈結檔案。touch server_chain.crt將伺服器憑證內容複寫到憑證鏈結檔案中。
cat server.crt >> server_chain.crt將CA認證內容複寫到憑證鏈結檔案並追加到伺服器憑證內容後面。
cat CA.crt >> server_chain.crt
您可以執行
cat server_chain.crt命令查看伺服器憑證鏈內容,憑證鏈結的內容格式如下:重要在進行步驟二:託管伺服器憑證後續操作時,需要上傳此步驟產生的伺服器憑證鏈。
-----BEGIN CERTIFICATE----- xxx 伺服器憑證內容 xxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- xxx CA認證內容 xxx -----END CERTIFICATE-----
ECC演算法認證
在安裝好的OpenSSL路徑下建立設定檔。
建立一個名為server.csr.cfg的檔案,內容如下:
說明[dn]內容請根據您的實際情況填寫。[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建立一個名稱為server.crt.cfg的檔案,內容如下:
說明[alt_names]可以填寫您自訂的網域名稱。如果您使用自訂網域名,則需要自行將自訂網域名CNAME到雲Message QueueTT 版服務提供的網域名稱。若您不需要使用自訂網域名,
[alt_names]直接填寫為雲Message QueueTT 版提供的網域名稱。例如:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com。若您需要在多個Region的不同執行個體使用同一個伺服器憑證,網域名稱填寫可以使用萬用字元,例如:DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
產生伺服器憑證的私密金鑰server.key
openssl ecparam -out server.key -name prime256v1 -genkey產生伺服器憑證的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認證簽發伺服器憑證
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg執行如下命令將伺服器憑證私密金鑰的格式轉換為PKCS#8格式,轉換後的認證私密金鑰為
server_pkcs8.key。openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key重要在進行步驟二:託管伺服器憑證後續操作時,需要上傳此步驟產生的伺服器憑證私密金鑰。
執行如下命令產生伺服器憑證鏈。
建立一個名稱為
server_chain.crt的空的憑證鏈結檔案。touch server_chain.crt將伺服器憑證內容複寫到憑證鏈結檔案中。
cat server.crt >> server_chain.crt將CA認證內容複寫到憑證鏈結檔案並追加到伺服器憑證內容後面。
cat CA.crt >> server_chain.crt
重要在進行步驟二:託管伺服器憑證後續操作時,需要上傳此步驟產生的伺服器憑證鏈。
步驟二:託管伺服器憑證
您需要將簽發的伺服器憑證託管至阿里雲認證管理服務控制台,託管後才能在雲Message QueueTT 版控制台查看並啟用伺服器憑證。
伺服器憑證支援RSA,ECC演算法。
若您需要自訂網域名,可在認證中添加網域名稱,並通過CNAME(Canonical Name)指向雲Message QueueTT 版執行個體的存取點網域名稱。
登入雲Message QueueTT 版控制台,並在左側導覽列單擊实例列表。
在頂部功能表列選擇目標地區,然後在執行個體列表中單擊執行個體名稱進入实例详情頁面。
在左側導覽列選擇,然後在頁面左上方單擊创建证书。
系統將自動跳轉到阿里雲認證管理服務控制台的SSL認證管理頁面。
在SSL認證管理頁面,單擊上傳認證。在彈出的上傳認證面板中填寫相關參數然後單擊確定。

認證標準:選擇國際標準。
認證檔案:上傳步驟一:使用CA認證簽發伺服器憑證中產生的伺服器憑證鏈檔案
server_chain.crt,或將憑證鏈結內容複寫到文字框中。認證私密金鑰:上傳步驟一:使用CA認證簽發伺服器憑證中產生的轉換格式後的認證私密金鑰檔案
server_pkcs8.key,或將認證私密金鑰內容複寫到文字框中。憑證鏈結:請勿在該參數下上傳憑證鏈結檔案或填寫憑證鏈結檔案內容,否則會導致認證認證失敗。
步驟三:使用伺服器憑證啟動服務
使用伺服器憑證啟動服務,啟動過程中用戶端會中斷連線,請您謹慎操作。
如果認證錯誤會導致服務短暫不可用。
登入雲Message QueueTT 版控制台,並在左側導覽列單擊实例列表。
在頂部功能表列選擇目標地區,然後在執行個體列表中單擊執行個體名稱進入实例详情頁面。
在左側導覽列選擇。
單擊双向认证,在彈出的對話方塊中選擇指定的伺服器憑證,並在其操作列單擊启动服务
啟動服務會重啟雲Message QueueTT 版執行個體,重啟時間預計5~10分鐘,重啟後用戶端即可使用伺服器憑證做服務端認證。
啟動服務後,8883連接埠將開啟雙向認證,同時關閉單向認證。
在彈出的提示對話方塊中仔細閱讀提示資訊並單擊确认。
如果您想要回退到單向認證,可以單擊单向认证,在彈出的提示對話方塊單擊确认,等待伺服器重啟完成即可。