HTTPS監聽通過SSL認證實現加密訪問和身份認證。本文介紹在CLB中使用認證的完整流程,包括認證選型與格式準備、建立認證、綁定到HTTPS監聽,以及後續的更換與到期續期。
認證選型與準備
認證方式
CLB支援單向認證和雙向認證兩種模式:
單向認證:CLB只需要設定管理員認證。由用戶端驗證伺服器身份。
雙向認證:CLB需要同時設定管理員認證、CA認證。伺服器和用戶端互相驗證身份。
大多數面向公網的網站只需使用單向認證。僅當您需要校正用戶端身份(例如企業內部系統、API調用方鑒權)時,才需要配置雙向認證。
認證來源
CLB支援兩種來源的認證:
阿里雲數位憑證管理服務:直接選擇在阿里雲數位憑證管理服務中已購買的認證,此方式便於統一管理,並可享受認證到期提醒和一鍵續期服務。僅支援伺服器憑證,暫不支援用戶端CA認證。
第三方簽發的認證:上傳由其他服務商簽發或您自簽名的認證,此方式需要您手動上傳認證的公開金鑰和私密金鑰檔案。支援伺服器憑證及用戶端CA認證。
用戶端CA認證只能通過上傳認證內容的方式添加,不能從阿里雲數位憑證管理服務中選擇。如果您需要自建CA並簽發用戶端認證,請參見使用OpenSSL產生CA認證。
認證格式要求
CLB只支援PEM格式的認證。在建立認證前,確保您的認證、憑證鏈結和私密金鑰符合以下格式要求。其它格式的認證需要先轉換為PEM格式,請參見轉換認證格式。
支援的認證類型:國際標準認證(RSA)。
支援的公開金鑰演算法:RSA 1024、RSA 2048、RSA 4096。
不支援上傳包含
BEGIN DH PARAMETERS欄位的PEM檔案。HTTPS監聽使用的ECDHE演算法簇已支援前向保密,無需上傳DHE演算法簇所需的安全增強參數檔案。
密鑰憑證的格式要求因簽發機構而異,請根據您的認證來源查看對應要求:
Root CA機構頒發的認證
如果是通過Root CA機構頒發的認證,您擷取的認證是唯一的一份,不需要額外的認證,配置的網站即可被瀏覽器等訪問裝置認為可信。
認證格式必須符合如下要求:
以
-----BEGIN CERTIFICATE-----, -----END CERTIFICATE-----開頭和結尾。每行64個字元,最後一行長度可以不足64個字元。
認證內容不能包含空格。
中級機構頒發的認證
如果是通過中級CA機構頒發的認證,您擷取的認證檔案包含多份認證,需要將伺服器憑證與中級認證合并在一起上傳。
憑證鏈結格式必須符合如下要求:
伺服器憑證放第一位,中級認證放第二位,中間不能有空行。
認證內容不能包含空格。
認證之間不能有空行,並且每行64位元組。更多資訊,請參見RFC1421。
符合認證的格式要求。一般情況下,中級機構在頒發認證時會有對應說明,認證要符合認證機構的格式要求。
中級機構頒發的憑證鏈結樣本如下:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----RSA私密金鑰格式要求
在上傳伺服器憑證時,您也需要上傳認證的私密金鑰。
RSA私密金鑰格式必須符合如下要求:
以
-----BEGIN RSA PRIVATE KEY-----, -----END RSA PRIVATE KEY-----開頭和結尾,請將這些內容一併上傳。字串之間不能有空行,每行64字元,最後一行長度可以不足64字元。更多資訊,請參見RFC1421。
如果您的私密金鑰是加密的,例如私密金鑰的開頭和結尾是-----BEGIN PRIVATE KEY-----, -----END PRIVATE KEY-----或-----BEGIN ENCRYPTED PRIVATE KEY-----, -----END ENCRYPTED PRIVATE KEY-----,或者私密金鑰中包含Proc-Type: 4,ENCRYPTED,需要先運行以下命令進行轉換:
openssl rsa -in old_server_key.pem -out new_server_key.pem在部分高版本openssl中,openssl rsa預設輸出PKCS#8,這將導致轉換失敗。請使用openssl rsa -in old_server_key.pem -out new_server_key.pem -traditional進行轉換。
轉換認證格式
如果您的認證不是PEM格式,請使用OpenSSL轉換為PEM格式後再上傳。
DER轉換為PEM
DER格式通常使用在Java平台中,認證檔案尾碼一般為.der、.cer或者.crt。
運行以下命令進行認證轉換:
openssl x509 -inform der -in certificate.cer -out certificate.pem運行以下命令進行私密金鑰轉換:
openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
P7B轉換為PEM
P7B格式通常使用在Windows Server和Tomcat中。
運行以下命令進行認證轉換:
openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cerPFX轉換為PEM
PFX格式通常使用在Windows Server中。
運行以下命令提取認證:
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem運行以下命令提取私密金鑰:
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
多網域名稱情境下的認證匹配邏輯
一個HTTPS監聽只能配置一個預設認證。如果需要在同一個HTTPS監聽上為多個網域名稱分別使用不同的認證,需要通過擴充網域名稱功能實現。
用戶端訪問時,CLB通過SNI(Server Name Indication)識別請求的網域名稱:優先使用該網域名稱所配置擴充網域名稱上的認證;如果找不到匹配的認證,則使用監聽配置的預設認證。
當一個監聽使用多張泛網域名稱(萬用字元)認證時,只有最先配置的那張泛網域名稱認證會自動匹配其名下的所有子網域名稱。之後配置的泛網域名稱認證不會自動匹配,需要為每一個具體的子網域名稱單獨添加擴充網域名稱,並指定使用對應的泛網域名稱認證。
例如,您先配置了*.example.com認證,之後又配置了*.test.com認證,則兩者的匹配行為不同:
用戶端訪問的網域名稱 | 能否自動匹配到對應認證 | 需要的操作 |
| 能。自動匹配 | 無需額外配置 |
| 不能。預設不會自動匹配 | 需為 |
使用擴充網域名稱時請注意:
按規格計費的CLB執行個體中,僅效能保障型執行個體支援SNI,即支援配置擴充網域名稱。
添加的擴充網域名稱與所選伺服器憑證中的網域名稱必須一致。
擴充網域名稱需要和轉寄策略配合使用才會生效,且轉寄策略中配置的網域名稱要與擴充網域名稱一致。
一個HTTPS監聽預設最多添加3個擴充網域名稱,最大可提升至10個。
擴充網域名稱的配置方法與完整說明,請參見CLB擴充網域名稱。
使用限制
建立認證
控制台
完成準備工作:
使用阿里雲簽發的認證:確保已在SSL認證控制台購買或上傳所需的伺服器憑證。
使用第三方簽發的認證:準備好PEM格式的伺服器憑證公開金鑰和私密金鑰檔案;配置雙向認證時,還需準備PEM格式的CA認證公開金鑰檔案。
前往CLB控制台,在左側導覽列選擇,單擊建立憑證。
在建立證書面板,根據認證來源完成配置,然後單擊建立。
選擇阿里雲簽發認證,從證書列表中選擇所需的SSL認證,並選擇憑證部署地域。
選擇上傳非阿里雲簽發認證,完成以下配置:
憑證類型:選擇本次要上傳的認證類型,頁面會根據所選類型顯示對應的配置項。
選擇伺服器憑證時,上傳密鑰憑證和私密金鑰,並選擇憑證部署地域。
選擇CA憑證時,上傳用戶端CA密鑰憑證(用於雙向認證中校正用戶端身份),並選擇憑證部署地域。
上傳的認證內容均相容NGINX格式。您可以單擊查看樣例參考正確格式。
API
調用UploadServerCertificate上傳伺服器憑證。使用阿里雲簽發的認證時,傳入
AliCloudCertificateId指定認證;上傳第三方認證時,通過ServerCertificate和PrivateKey傳入認證內容和私密金鑰。調用UploadCACertificate上傳用戶端CA認證,通過
CACertificate傳入認證內容。
將認證綁定到HTTPS監聽
認證建立完成後,需要綁定到HTTPS監聽才會生效。認證在添加HTTPS監聽時選擇,以下僅列出與認證相關的配置項,完整的監聽配置流程請參見添加HTTPS監聽。
HTTPS監聽在CLB上完成解密,轉寄到後端伺服器時使用HTTP協議而非HTTPS。因此後端伺服器需以HTTP協議提供服務,並確保健全狀態檢查、後端連接埠等配置與HTTP協議匹配(例如後端連接埠通常為80)。
控制台
在SSL憑證設定精靈,選擇已建立的伺服器憑證。
可選:單擊進階設定右側的編輯,按需配置雙向認證和TLS安全性原則。
開啟啟用雙向認證開關,選擇已上傳的CA認證。如果您使用自建CA簽發用戶端認證,請參見使用OpenSSL產生CA認證。
選擇TLS安全性原則。按規格計費的CLB執行個體中,僅效能保障型執行個體支援選擇TLS安全性原則,各策略支援的TLS協議版本與加密套件請參見TLS安全性原則。
按嚮導提示完成後端伺服器、健全狀態檢查等配置並提交,監聽建立成功後認證即生效。
API
調用CreateLoadBalancerHTTPSListener建立HTTPS監聽時綁定認證,通過
ServerCertificateId指定伺服器憑證;配置雙向認證時,通過CACertificateId指定CA認證。調用SetLoadBalancerHTTPSListenerAttribute修改已有HTTPS監聽綁定的認證。
更換認證
認證即將到期、需要更換籤發機構或認證配置有誤時,您需要更換認證。CLB提供兩種更換方式,請根據影響範圍選取。無論使用哪種方式,更換完成後都建議驗證認證是否生效。
對比項 | 方式一:替換監聽認證 | 方式二:通過認證管理替換認證 |
影響範圍 | 僅當前HTTPS監聽的預設認證 | 所有關聯該認證的監聽和擴充網域名稱 |
適用情境 | 只需更換某一個監聽的認證,或同時需要調整雙向認證、TLS安全性原則 | 同一張認證被多個監聽或擴充網域名稱使用,需要一次性全部更換 |
前提條件 | 無 | 該認證至少已關聯一個監聽或擴充網域名稱 |
更換認證時,CLB會更新監聽的認證配置,過程中可能出現短暫的HTTPS串連中斷(約數秒,表現為SSL串連錯誤),隨後自動回復,建議在業務低峰期執行。如果更換後出現異常,可將監聽認證改回原認證進行復原。
方式一:替換監聽認證
控制台
前往CLB控制台,單擊目標執行個體ID,在監聽頁簽找到目標HTTPS監聽,在操作列單擊管理憑證。
在管理憑證面板的選擇伺服器憑證(預設認證)下拉框中選擇新的伺服器憑證;如需同時調整雙向認證或TLS安全性原則,可在進階設定中修改,然後單擊確定。
此方式僅更換監聽的預設認證,不會更換擴充網域名稱上的認證。如果該監聽配置了擴充網域名稱,請另行更新擴充網域名稱的認證,或改用下面的方式一次性替換認證的所有關聯對象。
API
調用UploadServerCertificate上傳新認證,擷取新的認證ID。
調用SetLoadBalancerHTTPSListenerAttribute,傳入新的
ServerCertificateId更新HTTPS監聽的認證。如果該監聽配置了擴充網域名稱,還需針對每個擴充網域名稱調用SetDomainExtensionAttribute分別更新其認證。
僅更新監聽認證不會同時更新擴充網域名稱上的認證。如果漏掉擴充網域名稱,通過對應網域名稱訪問時仍會使用舊認證。
方式二:通過認證管理替換認證
通過認證管理替換認證後,所有關聯該認證的監聽或擴充網域名稱上的認證也將自動替換。
至少關聯了一個監聽或者擴充網域名稱的認證才能被替換。
前往CLB控制台,在左側導覽列選擇。
在憑證管理頁面,找到需要替換的目標認證,在操作列單擊替換認證。在替換伺服器憑證頁面完成配置後,單擊替換認證。
選擇建立一個認證並替換。
選擇阿里雲簽發認證,在證書列表選擇新的認證。
選擇上傳非阿里雲簽發認證,粘貼新認證的公開金鑰和私密金鑰內容。
選擇使用已有認證替換,在已有認證列表中選擇用來替換的伺服器憑證。
單擊去認證列表查看,在憑證管理頁面可確認關聯的監聽和擴充網域名稱已更新新認證。
驗證認證是否生效
通過瀏覽器訪問網站,查看認證詳情中的有效期間。建議使用無痕模式,避免緩衝影響判斷。
如果配置了擴充網域名稱,需要對每個網域名稱分別驗證,確認各網域名稱返回的都是預期的認證。
認證到期與續期
認證到期後,用戶端訪問您的網站會提示認證已到期或不安全,因此需要在到期前完成更換。
使用阿里雲數位憑證管理服務簽發的認證時,可享受認證到期提醒和一鍵續期服務,建議在該服務中及時關注到期通知。
在認證到期前,請先擷取新認證(在阿里雲數位憑證管理服務中續約或重新簽發認證,或向第三方簽發機構申請新認證),再根據前述章節在CLB中完成認證的更換與驗證。
在數位憑證管理服務中續約或重新簽發認證後,CLB監聽上使用的認證不會自動更新,仍需在CLB中執行更換認證操作。
更多資訊
配額
配額名稱 | 描述 | 預設值 | 是否支援申請 |
slb_quota_certs_num | 每個地區可上傳的伺服器憑證數量 | 100個 | |
slb_quota_ca_certs_num | 每個地區可上傳的用戶端CA認證數量 | 100個 |