使用 SSL 的 Oracle JDBC 连接
如果连接到 SSL(安全套接字层)服务器,请选中“需要 SSL”复选框。
从 2020.2 开始,Oracle 使用 JDBC 连接器。如果您的 Oracle 数据源配置为使用 SSL 单向或双向身份验证,您可以包括适当的证书和/或密钥来进行连接。
需要 SSL
如果连接需要 SSL,请执行以下操作:
- 从连接器对话框中,单击“需要 SSL”。
- 根据情况为您的连接配置 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 证书、客户端证书和客户端密钥,请执行以下操作:
- 如有必要,按照为 Oracle 配置单向 SSL中的步骤配置服务器信任。
- 单击“客户端证书 >>”。
- 指定客户端证书和客户端密钥的位置。
证书和私钥应采用未加密的 PEM 格式。有关转换为正确格式的建议,请参见本文档后面的说明。
选项 2:使用属性文件配置客户端证书和私钥
若要为证书和密钥配置使用属性文件,请执行以下操作:
- 修改 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 - 将 oracle.properties 保存到 <Document>\MyTableau Respository\Datasources 文件夹。
- 将 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 文件:
- 将 JKS 格式导出为 PKCS12 格式:
keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"
- 从 PKCS12 获取 PEM 文件:
openssl pkcs12 -in truststore.p12 -out serverca.pem
使用 keytool 和 OpenSSL 将服务器证书和客户端密钥从 JKS 信任存储导出为 PEM 文件:
- 按如下方式从信任存储中导出证书。
- 将 JKS 格式导出为 PKCS12 格式:
keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"
- 从 PKCS12 获取 PEM 文件:
openssl pkcs12 -in truststore.p12 -out serverca.pem
- 将 JKS 格式导出为 PKCS12 格式:
- 按如下方式从密钥存储中导出客户端密钥和客户端证书。
- 使用 keytool 将 JKS 格式转换为 PCKS12 格式:
keytool.exe -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "password" -deststorepass "password"
- 使用 OpenSSL 导出客户端证书:
openssl pkcs12 -in keystore.p12 -nokeys -out clientcert.pem
- 使用 OpenSSL 导出客户端密钥:
openssl pkcs12 -in keystore.p12 -nocerts -out clientkeyEncrypted.pem
- 使用 OpenSSL 将加密版本转换为 PKCS8 格式:
openssl pkcs8 -topk8 -nocrypt -in clientkeyEncrypted.pem -out clientkey.pem
- 使用 keytool 将 JKS 格式转换为 PCKS12 格式:
另请参见
- 针对 JDBC 连接配置 SSL - 有关针对 JDBC 连接安装可信 SSL 证书的更多常规信息。