設定用於 JDBC 連線的 SSL
許多 JDBC 連接器支援單向(標準)SSL,有些連接器則支援雙向 SSL。對於使用 Tableau 時沒有明確支援的連接器,可以透過自訂來進行啟用。有不同的方式可以為這兩種類型設定 SSL,您可以使用對您的環境最有意義的方法。
附註:對於 Tableau Cloud,若您的伺服器憑證不是由一般公用根 CA 簽署,且您沒有內嵌憑證的選項,則可以使用 Tableau Bridge。這將可讓您根據需要設定憑證和私密金鑰。
JDBC 連線的單向 SSL
如果在 JDBC 式連接器使用一般(單向)SSL,且您具備自簽章憑證或由非公共憑證授權單位 (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 Runtime 會在系統根信任存放區中搜尋受信任的 CA,不會從中繼憑證存放區中搜尋。
附註:如果您已安裝根 CA,但仍無法進行連線,可能是缺少中繼憑證所致。雖然 TLS 標準要求伺服器需在各自的鏈中傳送根憑證以外的所有憑證,但並非所有伺服器都符合標準。若伺服器不會傳送中繼憑證,您可以修正伺服器以正確轉送中繼憑證,或在根信任存放區中安裝中繼憑證。或者,您可以選擇在資料來源中嵌入憑證,或設定含有驅動程式屬性的信任存放區。
- 在 Windows 中搜尋「憑證」。
- 選取「管理電腦憑證」。
- 在「動作」功能表中選取「所有工作」,然後根據 Windows 版本而定,執行以下一項操作:
- 選取 「匯入」,然後選取「本機電腦」。
- 選取 「尋找憑證」。
- 找出您的憑證檔案。
- 匯入到「信任的根憑證授權單位」。
如使用 Mac:
若要在 Mac 上安裝自訂憑證,請按照以下步驟將憑證匯入「系統」金鑰鏈。
附註:在 Mac 上,從金鑰鏈載入憑證適用於大多數(但不是全部)驅動程式。對於其他驅動程式,可能需要使用 .properties 檔案來設定信任存放區。有關詳情,請參閱自訂和調整連線。
- 前往 https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac(連結在新視窗開啟)。
- 將憑證匯入「系統」金鑰鏈(而不是「系統根目錄」)。
- 請按照以下步驟啟用信任:
- 在金鑰鏈應用程式中,以右鍵按一下新憑證。
- 選取「取得資訊」。
- 在對話方塊中,開啟「信任」部分,然後選取「使用此憑證時始終信任」。
對於 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 設定。
- 修改 .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 - 將 .properties 檔案儲存到相應的資料來源資料夾,具體取決於 Tableau 產品。若您不確定,請參閱自訂和調整連線中可能目錄的完整清單。
- 若發佈到 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 的完整文件。
另請參閱
- Oracle JDBC 連線的「需要 SSL」(連結在新視窗開啟):將信任的 SSL 憑證新增到 Oracle JDBC 連線的安裝說明。
- 需要 SSL 的 Oracle JDBC 連線