验证 Vertica 服务器对 SecureData CA 证书的访问权限

在将 SecureData 与 Vertica 结合使用之前,必须确认根证书颁发机构 (CA) 和用于对 SecureData 设备证书进行签名的任何中间证书颁发机构位于 Vertica 服务器的信任库 (/opt/vertica/packages/voltagesecure/trustStore/) 中。Vertica 在此目录中列出了许多标准根证书。如果您的 SecureData 设备使用由标准 CA 颁发机构签名的证书,则它可能已经存在于信任库中。

如果您的 SecureData 设备使用由您自己的内部 CA 颁发机构签名的证书,则必须将此 CA 证书添加到 Vertica 信任库中。

如果不确定您的 CA 证书是否在 Vertica 信任库中,请按照疑难解答证书问题下的步骤测试 Vertica 是否已经拥有 CA 证书。如果您能够从 SecureData 设备中检索到客户端策略 XML 文件,则您的 Vertica 群集拥有用于访问 SecureData 的正确的 CA 证书。

将 CA 证书添加到 Vertica

如果您使用了以下各项,则必须在使用 SecureData 集成之前将 CA 添加到 Vertica 信任库:

  • 您自己的 CA 证书来对 SecureData 设备的证书进行签名。

  • 不在 Vertica 信任库中的第三方 CA。

要将 CA 证书添加到 Vertica 信任库,您需要拥有:

  • 用于对 SecureData 设备的证书进行签名的证书颁发机构 (CA) 文件。此文件必须使用增强型私人邮件 (pem) 格式。文件名无关紧要,只要具有 .pem 扩展名即可。

  • 对 Vertica 节点上的 dbadmin 帐户的访问权限。需要此访问权限才能将证书文件复制到 Vertica 安装中的信任存储目录。

要将所需的 CA 文件添加到 Vertica,请执行以下操作:

  1. 以 dbadmin 用户身份登录到 Vertica 节点之一。

  2. 将 .pem 文件复制到 /opt/vertica/packages/voltagesecure/trustStore/ 目录。您只需将此文件复制到单个节点。Vertica 会将文件分发给群集中的其余节点。

  3. 在 Linux 命令行中,执行以下命令以重新安装 SecureData 集成库:

    $ admintools -t install_package -d database_name -p 'password' --package voltagesecure --force-reinstall
    

当 Vertica 重新安装 SecureData 集成库时,它会将 CA 授权文件复制到群集中的所有节点。文件分发完成后,所有 Vertica 节点都可以使用 SecureData 设备进行身份验证。

例如,假设:

  • 您的证书文件名为 my_ca.cert.pem,且您已将其复制到群集中节点上的 dbadmin 主目录。

  • 您的数据库名为 VMart。

则安装 CA 文件的过程将如下所示:

$ cp my_ca.cert.pem /opt/vertica/packages/voltagesecure/trustStore/
$ admintools -t install_package -d VMart -p dbadminpassword --package voltagesecure --force-reinstall
Installing package voltagesecure...
...Success!

疑难解答证书问题

您可以通过从 Linux 命令行执行以下语句来测试 Vertica 信任库是否具有正确的证书:

curl --capath /vertica_catalog_directory/Libraries/\
$(vsql -A -t -c "SELECT sal_storage_id from user_libraries WHERE lib_name = 'VoltageSecureLib';")\
https://SecureData_applicance_hostname/policy/clientPolicy.xml

其中:

  • vertica_catalog_directory 是 Vertica 编录目录的绝对路径。有关编录目录的详细信息,请参阅了解编录目录

  • SecureData_appliance_hostname 是 SecureData 设备的主机名。

例如,假设您连接到示例 VMart 数据库的 node0001。此外,您的 Voltage SecureData 设备的主机名为 voltage-pp-0000.example.com。那么,您可以使用以下命令来测试您的证书安装。

$ curl --capath /home/dbadmin/VMart/v_vmart_node0001_catalog/Libraries/\
$(vsql -A -t -c "SELECT sal_storage_id from user_libraries WHERE lib_name = 'VoltageSecureLib';") \
https://voltage-pp-0000.example.com/policy/clientPolicy.xml


<clientPolicy version="2">

<server name="SecureDataAppliance" version="6.4.2.232000" />

<localDomains>example.com</localDomains>

<userWhitelist></userWhitelist>

<defaultDistrict value="0" />

<sendUniversalReader value="1" />

<messageFooterGlobal></messageFooterGlobal>

<parameterAggressiveDistricts>example.com</parameterAggressiveDistricts>

<localPolicyLocked value="0" />

<trustedDistricts></trustedDistricts>

<fallThroughDistrict>example.com</fallThroughDistrict>
      .    .    .

<clientPolicy>... 输出(即 clientPolicy.xml 文件的内容)表明 Vertica 节点能够使用其 CA 证书连接到 SecureData 设备。

如果您在 Vertica 上安装的 CA 证书与在 SecureData 设备上安装的证书不匹配,您将看到类似于以下内容的错误:

$ curl --capath /home/dbadmin/VMart/v_vmart_node0001_catalog/Libraries/$(vsql\
 -A -t -c "SELECT sal_storage_id from user_libraries WHERE lib_name = 'VoltageSecureLib';")\
 https://voltage-pp-0000.example.com/policy/clientPolicy.xml

curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

在这种情况下,请确认您已在 Vertica 中安装了正确的 CA 证书,并且其文件名具有 .pem 扩展名。

如果看到其他错误,例如“无法连接到主机”,请验证您的防火墙配置是否允许 Vertica 节点访问 SecureData 设备。