针对 JDBC 连接配置 SSL

许多 JDBC 连接器支持单向(标准)SSL,一些支持双向 SSL。对于那些没有使用 Tableau 明确支持的用户,您可能能够通过自定义来启用它。两种类型的 SSL 都有不同的配置方法,您可以使用最适合您环境的方法。

注意:对于 Tableau Cloud,如果您的服务器证书不是由通用公共根 CA 签名的,并且您没有嵌入证书的选项,则可以使用 Tableau Bridge。这将允许您根据需要配置证书和私钥。

适用于 JDBCP 连接的单向 SSL

如果将常规(单向)SSL 与基于 JDBC 的连接器一起使用,并且您有自签名证书或由非公共证书颁发机构 (CA) 签名的证书,则需要为证书配置信任。

借助 Tableau,您可以使用以下方法之一为 JDBC 连接配置单向 SSL 信任:

嵌入证书

某些连接器支持在工作簿或数据源中嵌入证书。如果该功能可用,则可以使用 Tableau Desktop 嵌入 CA 证书。

在系统信任存储中安装证书

如果嵌入不可用,您将需要另一种方法来配置信任。此外,这样做可能比将证书嵌入到每个工作簿中要容易得多。下面包含针对 Windows、Mac 和 Linux 平台的说明。

Tableau Server 的默认信任存储位置为:

/opt/tableau/tableau_server/packages/repository.20233.24.0514.1218/jre/lib/security/cacerts

对于 Windows:

您可以在 Windows 根 CA 信任存储中安装 CA 或自签名证书。Java 运行时在系统根信任存储中查找受信任的 CA。它不会在中间证书存储中查找。

注意:如果已安装了根 CA,但在进行连接时仍然遇到问题,则可能是由于缺少中间证书造成的。虽然 TLS 标准要求服务器发送其链中的所有证书(根证书除外),但并非所有服务器都符合要求。如果服务器不发送中间证书,您可以修复服务器以正确转发中间证书或在根信任存储中安装中间证书。或者,您可以选择在数据源中嵌入证书,或者配置具有驱动程序属性的信任存储。

  1. 在 Windows 中,搜索“证书”。
  2. 选择“管理计算机证书”。
  3. 在“操作”菜单中,选择“所有任务”,然后根据 Windows 版本执行以下操作之一:
    • 选择“导入”,然后选择“本地计算机”。
    • 选择“查找证书”。
  4. 浏览以查找证书文件。
  5. 导入到“受信任的根证书颁发机构”中。

对于 Mac:

若要在 Mac 上安装自定义证书,请按照这些步骤将证书导入“系统”钥匙串。

注意:从 Mac 上的钥匙串加载证书适用于大多数(但不是全部)驱动程序。对于其他驱动程序,您可能需要使用 .properties 文件来配置信任库。有关详细信息,请参见自定义和调整连接

  1. 转到 https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac(链接在新窗口中打开)
  2. 将证书导入“系统”钥匙串(不是“系统根”)。
  3. 按如下方式启用信任:
    1. 在钥匙串应用软件中,右键单击新证书。
    2. 选择“获取信息”。
    3. 在对话框中,打开“信任”部分,然后选择“使用此证书时始终信任”。

对于 Linux:

许多 Linux 发行版将从系统证书生成 Java 格式的信任存储。您可能需要通过程序包管理器安装 Java 才能创建此文件。

这允许 JRE 使用与操作系统相同的证书。

注意:Tableau Server 会在标准位置中查找此文件:
/etc/ssl/certs/java/cacerts
/etc/pki/java/cacerts

若要配置其他位置,请运行:

tsm configuration set -k native_api.ConnectivityTrustStore -v <path-to-cacerts> --force-keys

此文件应:

  • 包含所有受信任的 CA 和自签名证书。
  • 仅包含公钥。
  • 采用 JKS 格式。
  • 可由 Tableau 无特权用户(“运行身份用户”)读取。
  • 使用默认的 JKS 密码“changeit”

若要安装自定义 CA 或自签名证书,请参见适用于您的发行版的文档。运行相应的命令以生成密钥存储。例如:

update-ca-certificates

使用自定义驱动程序属性

您可以使用 .properties 文件自定义 JDBC 连接选项,包括信任存储的位置。这是一个纯文本文件,其中包含每个连接参数的键值对。

例如,此属性文件中的行用于配置信任设置:

javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStorePassword=password

注意:有关特定属性设置的详细信息,请参见驱动程序的文档。

创建文件并将其保存到正确的位置时,文件中的属性将应用于到同一数据源类型的所有 JDBC 连接。

如果使用通用的“其他数据库 (JDBC)”连接器,则可以直接在连接对话框中指定 .properties 文件。

有关详细信息,请参见自定义和调整连接(链接在新窗口中打开)

适用于 JDBC 连接的双向 SSL

一些 JDBC 连接(例如 Postgres)也可以配置为使用双向 SSL 身份验证。可以通过使用 .properties 文件来指定信任存储和密钥的位置和详细信息。

使用 .properties 文件配置客户端证书和私钥

注意:对于 Tableau Cloud,如果您需要双向 SSL,并且连接器没有嵌入密钥的选项,则您需要使用 Tableau Bridge 并在其中设置 SSL 配置。

  1. 修改 .properties 文件以反映密钥存储和信任存储设置。以如下内容为例。确保替换代表您的文件位置的“My_Folder”,并将“<password>”替换为您自己的密码。OSX 和 Linux 上的路径只需要单个“/”作为分隔符。

    javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
    javax.net.ssl.trustStoreType=JKS
    javax.net.ssl.trustStorePassword=<password>
    javax.net.ssl.keyStore=C:\\My_Folder\\keystore.jks
    javax.net.ssl.keyStoreType=JKS
    javax.net.ssl.keyStorePassword=password

  2. 根据 Tableau 产品,将 .properties 文件保存到适当的数据源文件夹。如果您不确定,请参见自定义和调整连接中可能的目录的完整列表。
  3. 如果您发布到 Tableau Server,确保在每个 Tableau Server节点的正确位置安装 .properties 文件、truststore.jks 和 keystore.jks。

如果使用此方法,则无需通过 SSL 对话框上载证书和密钥。而是只需单击“需要 SSL”。这会导致 JDBC 连接器 .properties 文件读取密钥存储和信任存储的位置。

疑难解答

使用 SSL 的问题通常与不正确的证书配置有关。

开始缩小问题根源范围的一种方法是验证正在使用的证书以及安装的位置。安装 OpenSSL CLI 工具后,您可以使用 s_client 命令:

openssl s_client -connect hostname:port -showcerts

hostname port 替换 为适合您正在测试的系统的值。执行时,此命令将尝试创建 SSL 连接,然后显示从服务器发送的证书。

一些数据库有自定义的 TLS 握手,openssl 直接支持其中的几个。从最新版本开始,它们是 postgres 和 mysql。如果您正在连接到 postgres 或 mysql 兼容数据库,并且在使用上述命令时遇到问题,则可以尝试使用 -starttls 选项来启用数据库使用的协议。例如:

openssl s_client -connect hostname:port -showcerts -starttls postgres

有关使用 OpenSSL 进行故障排除的详细信息,请参见使用 OpenSSL s_client 命令测试 SSL 连接(链接在新窗口中打开)。您可以在OpenSSL 文档(链接在新窗口中打开)中找到 OpenSSL s_client 的完整文档。

另请参见

感谢您的反馈!您的反馈已成功提交。谢谢!