CloudPools 帳戶建立失敗,或 CloudPools 帳戶無法連線,並顯示訊息:clapi 錯誤:CL_SSL_CACERT
Summary: CloudPools 帳戶建立失敗,並出現憑證錯誤。
Symptoms
嘗試建立 CloudPools 帳戶時發生以下錯誤:
Account Create Failed. The CloudPools account did not create due to the following error: Account validation failed to connect to remote server: clapi error: CL_SSL_CACERT; Peer certificate cannot be authenticated with known CA certificates.
升級至 OneFS 8.2 後,檢視現有的 CloudPools 帳戶時,也會出現相同的錯誤。
Cause
如果未正確安裝根憑證,CloudPools 帳戶建立會失敗並顯示此錯誤。中繼自簽章憑證也是如此
如果升級到 OneFs v8.2,這會在將靜態憑證清單遷移到新儲存區時發生。此儲存不包括已安裝在 CloudPools 系統上的憑證 (例如 ECS 憑證),因此不屬於此清單。
Resolution
請遵循以下步驟以解決問題。
-
執行下列命令,將 CloudPools 伺服器的憑證清單傾印至文字檔案中:
openssl s_client -connect <cloudpool_server>:443 -showcerts -certform PEM > cert.txt
-
從cert.txt開始,所需的憑證元件位於以下行開頭:
-----BEGIN CERTIFICATE----- AND -----END CERTIFICATE----- -
複製最後一個憑證,因為它應該是來自簽署機構的 ROOT CA 憑證。將 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 的所有內容複製並貼到名為 /ifs/.ifsvar/modules/cloud/cacert/<some_cloudpools_root_cert.pem> 的新檔案中。
-
將目錄變更為憑證的位置。
cd /ifs/.ifsvar/modules/cloud/cacert
-
使用以下命令計算認證檔案的雜湊:
openssl x509 -hash -noout -in <some_cloudpools_root_cert>.pem
-
使用雜湊值命令的輸出建立指向憑證的符號連結:
ln -s <some_cloudpools_root_cert>.pem <hash_value>.suffix
注意:<尾碼> 開頭為 0。如果現有符號連結檔案名稱發生衝突,請使用下一個數字作為尾碼。 -
請瀏覽 CloudPools 帳戶,然後再次建立程序。
如果版本為 OneFs 8.2 及更新版本,請視需要繼續執行後續步驟:
-
當您位於路徑「/ifs/.ifsvar/modules/cloud/cacert」時,執行憑證匯入命令。
範例:
# ls -lh 94d536c0.0 lrwxr-xr-x 1 root wheel 39B Jun 3 10:35 94d536c0.0 -> cert_cloud account.pem # isi certificate authority import --certificate-path=cert_account-URI.pem --description="ECS CA" --name=ecs_cert
-
使用以下命令尋找新增到授權單位清單中 的ecs_cert :
#isi certificate authority list
-
使用以下命令重新啟動isi_cpool_d服務:
# isi services -a isi_cpool_d disable
等待 30 秒,然後執行命令:
# isi services -a isi_cpool_d enable
-
使用命令確認雲端帳戶可以連線,且狀態正常:
# isi cloud accounts view <account-name>
Additional Information
如果管理員在建立帳戶或將此選項從「略過」變更為「不略過」時啟用 SSL 憑證驗證,則伺服器必須已正確安裝根憑證。否則,CloudPools 無法連線至雲端提供商,並產生SSL_CACERT_ERROR。
當帳戶設定為執行 SSL 憑證驗證時,每當 CloudPools 連線至該帳戶的雲端提供商時,都會執行驗證,且驗證可能會失敗。發生這種情況時,將創建群集事件日誌事件,如 1100000009 CPOOL_CERTIFICATE_ERROR。
如果存儲服務提供者已安裝自簽名證書,則在連接到伺服器時,該證書還應顯示在證書鏈中。尋找自我簽署憑證,因為它是用來驗證伺服器的根憑證。
只需要將根憑證預先安裝至 CloudPools 叢集。如果網站部署 SSL 代理伺服器,則可能還需要獲取和安裝中間證書。
如果根憑證複本的格式非 PEM 編碼格式,請在安裝前,使用 OpenSSL 命令進行 PEM 轉換。