使用 SSL 的 Oracle JDBC 连接

如果连接到 SSL(安全套接字层)服务器,请选中“需要 SSL”复选框。

从 2020.2 开始,Oracle 使用 JDBC 连接器。如果您的 Oracle 数据源配置为使用 SSL 单向或双向身份验证,您可以包括适当的证书和/或密钥来进行连接。

需要 SSL

如果连接需要 SSL,请执行以下操作:

  1. 从连接器对话框中,单击“需要 SSL”。

  2. 根据情况为您的连接配置 SSL:
    • 如果使用自签名证书或由专用 CA 签名的证书,则可能需要为单向 SSL 连接配置信任。请参见为 Oracle 配置单向 SSL
    • 如果使用双向 SSL,则需要配置客户端密钥。请参见配置双向 SSL

为 Oracle 配置单向 SSL

若要为服务器证书配置信任,请参见此处有关 JDBC 连接器的一般说明:为 JDBC 连接配置单向 SSL

如果您决定使用属性文件来配置信任,请为 Oracle JDBC 驱动程序使用以下属性。

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

注意:若要将工作簿发布到 Tableau Server,Tableau Desktop 和 Tableau Server 计算机均必须有同一 Oracle 属性文件和 truststore.jks 文件的副本。

配置双向 SSL

可选择通过两种方式为 Oracle 连接配置双向 SSL 支持:

选项 1:在数据源中嵌入客户端证书和私钥

若要嵌入 SSL 证书、客户端证书和客户端密钥,请执行以下操作:

  1. 如有必要,按照为 Oracle 配置单向 SSL中的步骤配置服务器信任。
  2. 单击“客户端证书 >>”。

  3. 指定客户端证书和客户端密钥的位置。
    证书和私钥应采用未加密的 PEM 格式。有关转换为正确格式的建议,请参见本文档后面的说明。

选项 2:使用属性文件配置客户端证书和私钥

若要为证书和密钥配置使用属性文件,请执行以下操作:

  1. 修改 oracle.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. 将 oracle.properties 保存到 <Document>\MyTableau Respository\Datasources 文件夹。
  3. 将 oracle.properties、truststore.jks 和 keystore.jks 复制到 Tableau Server 计算机。这允许将工作簿发布到 Tableau Server。

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

发布工作簿

若要将工作簿发布到 Tableau Server,请确保满足以下条件:

  • 如果使用属性文件,则 Tableau Desktop 和 Tableau Server 计算机均有同一 Oracle 属性文件、truststore.jks 和 keystore.jks 的副本。
  • 服务器使用同一 Oracle JDBC 连接器作为 Tableau Desktop 计算机。
  • 如果使用过嵌入选项,请在发布时使用“嵌入密码”选项。

转换密钥格式

有若干用于存储 SSL 密钥的格式,其中包括:

  • Oracle 钱包
  • JKS - 如果要使用属性文件配置 SSL 信任,请使用此格式。
  • PEM - 如果要使用 Tableau 接口将密钥嵌入数据源,请使用此格式。

以下是一些建议的命令,您可以在命令行提示符处键入这些命令,以将密钥转换为正确的格式。有关更多详细信息,请参见 Oracle 文档。

将证书从 Oracle 钱包导出为 PEM 文件:

orapki wallet export -wallet wallet_location -dn certificate_dn -cert output_certificate_filename.pem

将服务器证书和客户端密钥从 Oracle 钱包导出为 JKS:

orapki wallet pkcs12_to_jks -wallet ./-pwd mypasswd -jksKeyStoreLoc ./ewalletK.jks -jksKeyStorepwd password -jksTrustStoreLoc ./ewalletT.jks -jksTrustStorepwd password

使用 keytool 和 OpenSSL 将服务器证书从 JKS 信任存储导出为 PEM 文件:

  1. 将 JKS 格式导出为 PKCS12 格式:

    keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"

  2. 从 PKCS12 获取 PEM 文件:

    openssl pkcs12 -in truststore.p12 -out serverca.pem

使用 keytool 和 OpenSSL 将服务器证书和客户端密钥从 JKS 信任存储导出为 PEM 文件:

  1. 按如下方式从信任存储中导出证书。
    1. 将 JKS 格式导出为 PKCS12 格式:

      keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"

    2. 从 PKCS12 获取 PEM 文件:

      openssl pkcs12 -in truststore.p12 -out serverca.pem

  2. 按如下方式从密钥存储中导出客户端密钥和客户端证书。
    1. 使用 keytool 将 JKS 格式转换为 PCKS12 格式:

      keytool.exe -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"

    2. 使用 OpenSSL 导出客户端证书:

      openssl pkcs12 -in keystore.p12 -nokeys -out clientcert.pem

    3. 使用 OpenSSL 导出客户端密钥:

      openssl pkcs12 -in keystore.p12 -nocerts -out clientkeyEncrypted.pem

    4. 使用 OpenSSL 将加密版本转换为 PKCS8 格式:

      openssl pkcs8 -topk8 -nocrypt -in clientkeyEncrypted.pem -out clientkey.pem

另请参见

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