CloudPoolsアカウントの作成に失敗したか、CloudPoolsアカウントにアクセスできず、次のメッセージが表示される: clapi error: 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
-
hash valueコマンドの出力を使用して、証明書へのシンボリック リンクを作成します。
ln -s <some_cloudpools_root_cert>.pem <hash_value>.suffix
メモ:<suffix> は 0 から始まります。既存のシンボリックリンクファイル名が競合する場合は、次の番号をサフィックスとして使用します。 -
CloudPoolsアカウントを確認し、プロセスを再度作成します。
バージョンがOneFs 8.2以降の場合は、必要に応じて次の手順に進みます。
-
パス「/ifs/.ifsvar/modules/cloud/cacert」に立った状態で、証明書インポート コマンドを実行します。
Example:
# 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変換を行います。