共用方式為


排除 TLS 連線故障

這很重要

我們已開始為 Azure Database for PostgreSQL 進行 TLS 憑證輪替 ,以更新新的中介 CA 憑證及其產生的憑證鏈。 根CA保持不變。

如果您的客戶端設定實作了 TLS 的推薦配置,則無需採取任何行動。

證書輪替時間表

  • Azure 地區(美國中西部、東亞及英國南部)於 2025 年 11 月 11 日開始 TLS 證書輪替。
  • 自 2026 年 1 月 19 日起,此證書輪替計畫將擴展至剩餘(中國除外)區域,包括 Azure 政府。
  • 2026年春節(農曆新年)後,中國各地區也將進行證書輪替,涉及其中一個根 CA 的變更。

驗證用戶端設定

在任何計畫輪替前驗證您的客戶端設定,請確保您實作 TLS 的推薦設定

檢查你的根憑證儲存庫

你應該要麼在客戶的根憑證儲存庫中安裝最低要求的根憑證,要麼就安裝完整的根憑證集合。

謹慎

在客戶端的根憑證庫中,只信任 Azure 的根 CA 憑證。 避免信任中間CA或個別伺服器憑證,因為這些做法在Microsoft更新憑證鏈或輪換個別伺服器憑證時,可能導致意外連線問題。

確認 TLS 連線狀態

要判斷你目前的 TLS 連線狀態,你可以載入 sslinfo 擴充功能 ,然後呼叫該 ssl_is_used() 函式來判斷是否正在使用 TLS。 如果連線使用 TLS,函式會回傳 t 。 否則會傳回 f。 您也可以使用以下查詢,依照程序、客戶端及應用程式分類,收集 Azure 資料庫 PostgreSQL 彈性伺服器執行個體的 TLS 使用情況:

SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;

使用 OpenSSL 測試 TLS 連線

測試時,你可以用命令 openssl 連接 Azure 資料庫 for PostgreSQL,並顯示 TLS 憑證。

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

此命令會列印低階通訊協定資訊,例如 TLS 版本和加密。 您必須使用選項 -starttls postgres。 否則,此指令會回報未使用 TLS。 使用此命令至少需要 OpenSSL 1.1.1 版本。

讀取副本

將根 CA 移轉至 Microsoft RSA Root CA 2017 時,新建立的複本可能會使用相較於先前建立的主要伺服器更新的根 CA 憑證。 對於使用 sslmode=verify-casslmode=verify-full 設定參數的客戶端,必須接受新的和之前的根 CA 憑證,直到新舊伺服器的輪替完成。

疑難排解

  1. 首先重現問題
  2. 收集診斷資料(用戶端錯誤訊息、psql 輸出、OpenSSL s_client輸出及伺服器日誌)。
  3. 驗證伺服器參數(require_secure_transport、ssl_min_protocol_version、ssl_max_protocol_version)
  4. 檢查憑證鏈,以及用戶端 sslmode/sslrootcert 設定,以精準找出協定版本、密碼套件或遺失/輪換憑證的不符。

TLS 連線錯誤

  1. 排除 TLS 協定版本相容性的第一步,是找出您或您的使用者在用戶端嘗試以 TLS 加密方式存取 Azure Database for PostgreSQL 彈性伺服器實例時所看到的錯誤訊息。 視應用程式和平台而定,錯誤訊息可能會不同。 在許多情況下,它們會指向基礎問題。
  2. 為了確保 TLS 協定版本相容性,請檢查資料庫伺服器與應用程式用戶端的 TLS 設定,確保它們支援相容的版本與密碼套件。
  3. 分析資料庫伺服器與客戶端 TLS 版本及密碼套件間的任何差異或缺口。 嘗試藉由啟用或停用特定選項、升級或降級軟體,或變更憑證或金鑰來解決問題。 例如,根據安全性與相容性需求,您可能需要啟用或停用伺服器或用戶端的特定 TLS 版本。 例如,您可能需要停用 TLS 1.0 和 TLS 1.1,這被視為不安全且已被取代,並啟用 TLS 1.2 和 TLS 1.3,這些較安全且為現代。
  4. 隨著 Microsoft RSA Root CA 2017 發行的最新憑證在由 Digicert Global Root G2 CA 交叉簽署的鏈結中包含中繼。 某些 Postgres 用戶端程式庫雖然使用 sslmode=verify-fullsslmode=verify-ca 設定,但可能會因使用中繼憑證交叉簽署的根 CA 憑證而發生連線失敗。 結果是替代信任路徑。

為了解決這些問題,請將所有必要的憑證加入客戶端憑證儲存庫,或明確指定參數。sslrootcert 或者,將 PGSSLROOTCERT 環境變數設定從預設值的 %APPDATA%\postgresql\root.crt 設定為本機路徑,其中放置了 Microsoft RSA Root CA 2017 根 CA 憑證。

憑證授權中心問題

備註

如果你 沒有 在客戶端應用程式的連線字串中使用 sslmode=verify-fullsslmode=verify-ca 設定,那麼憑證輪替不會影響你。 因此,您不需要遵循本節中的步驟。

  1. 產生您的受信任根存放區中的憑證清單
    1. 例如,您可以 以程式設計方式取得 Java 金鑰儲存庫中的授信憑證清單
    2. 例如,您可以 檢查 cacerts java 金鑰儲存庫,以查看它是否已包含必要的憑證
  2. 你正在使用證書鎖定,如果你有獨立的中間憑證或獨立的 PostgreSQL 伺服器憑證。 這是一個不支援的配置。
  3. 要移除憑證釘選,請從受信任的根存放區中移除所有憑證,然後只新增根 CA 憑證

如果你即使按照這些步驟操作還是遇到問題,請聯絡 Microsoft 客服。 要在標題中加入 ICA 輪換 2026

憑證釘選問題

如果你沒有在客戶端應用程式的連接字串中使用 sslmode=verify-fullsslmode=verify-ca 設定,那麼憑證輪替不會影響你。 因此,您不需要遵循本節中的步驟。

  1. 確認你在應用程式中是否使用憑證固釘。
  2. 建立你信任根目錄中的憑證清單。 例如:
    1. 用程式化的方式在 Java 金鑰庫取得可信憑證清單。
    2. 檢查 Cacerts Java 金鑰庫是否已經包含所需的憑證。
  3. 當你有獨立的中間憑證或獨立的 PostgreSQL 伺服器憑證時,表示你正在使用憑證釘選。
  4. 若要移除憑證釘選,請從受信任的根存放區移除所有憑證,然後新增新的憑證。
  5. 你可以從 Microsoft 官方倉庫下載更新後的憑證:Azure 憑證授權機構詳情。

如果你即使按照這些步驟操作還是遇到問題,請聯絡 Microsoft 客服。 在標題中包含「ICA Rotation 2026」。

驗證憑證鏈

舊鏈條

  • DigiCert 全球根憑證 G2
    • Microsoft Azure RSA TLS 發行 CA 03 / 04 / 07 / 08
    • 伺服器憑證

新鏈條

  • DigiCert 全球根憑證 G2
    • 微軟 TLS RSA 根憑證 G2
    • Microsoft TLS G2 RSA CA OCSP 02 / 04 / 06 / 08 / 10 / 12 / 14 / 16
    • 伺服器憑證