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----- -
复制最后一个证书,因为它应该是来自签名颁发机构的根 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 转换。