這很重要
我們已開始為 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-ca 和 sslmode=verify-full 設定參數的客戶端,必須接受新的和之前的根 CA 憑證,直到新舊伺服器的輪替完成。
疑難排解
- 首先重現問題
- 收集診斷資料(用戶端錯誤訊息、psql 輸出、OpenSSL s_client輸出及伺服器日誌)。
- 驗證伺服器參數(require_secure_transport、ssl_min_protocol_version、ssl_max_protocol_version)
- 檢查憑證鏈,以及用戶端 sslmode/sslrootcert 設定,以精準找出協定版本、密碼套件或遺失/輪換憑證的不符。
TLS 連線錯誤
- 排除 TLS 協定版本相容性的第一步,是找出您或您的使用者在用戶端嘗試以 TLS 加密方式存取 Azure Database for PostgreSQL 彈性伺服器實例時所看到的錯誤訊息。 視應用程式和平台而定,錯誤訊息可能會不同。 在許多情況下,它們會指向基礎問題。
- 為了確保 TLS 協定版本相容性,請檢查資料庫伺服器與應用程式用戶端的 TLS 設定,確保它們支援相容的版本與密碼套件。
- 分析資料庫伺服器與客戶端 TLS 版本及密碼套件間的任何差異或缺口。 嘗試藉由啟用或停用特定選項、升級或降級軟體,或變更憑證或金鑰來解決問題。 例如,根據安全性與相容性需求,您可能需要啟用或停用伺服器或用戶端的特定 TLS 版本。 例如,您可能需要停用 TLS 1.0 和 TLS 1.1,這被視為不安全且已被取代,並啟用 TLS 1.2 和 TLS 1.3,這些較安全且為現代。
- 隨著 Microsoft RSA Root CA 2017 發行的最新憑證在由 Digicert Global Root G2 CA 交叉簽署的鏈結中包含中繼。 某些 Postgres 用戶端程式庫雖然使用
sslmode=verify-full或sslmode=verify-ca設定,但可能會因使用中繼憑證交叉簽署的根 CA 憑證而發生連線失敗。 結果是替代信任路徑。
為了解決這些問題,請將所有必要的憑證加入客戶端憑證儲存庫,或明確指定參數。sslrootcert 或者,將 PGSSLROOTCERT 環境變數設定從預設值的 %APPDATA%\postgresql\root.crt 設定為本機路徑,其中放置了 Microsoft RSA Root CA 2017 根 CA 憑證。
憑證授權中心問題
備註
如果你 沒有 在客戶端應用程式的連線字串中使用 sslmode=verify-full 或 sslmode=verify-ca 設定,那麼憑證輪替不會影響你。
因此,您不需要遵循本節中的步驟。
- 產生您的受信任根存放區中的憑證清單
- 例如,您可以 以程式設計方式取得 Java 金鑰儲存庫中的授信憑證清單。
- 例如,您可以 檢查 cacerts java 金鑰儲存庫,以查看它是否已包含必要的憑證。
- 你正在使用證書鎖定,如果你有獨立的中間憑證或獨立的 PostgreSQL 伺服器憑證。 這是一個不支援的配置。
- 要移除憑證釘選,請從受信任的根存放區中移除所有憑證,然後只新增根 CA 憑證。
如果你即使按照這些步驟操作還是遇到問題,請聯絡 Microsoft 客服。 要在標題中加入 ICA 輪換 2026。
憑證釘選問題
如果你沒有在客戶端應用程式的連接字串中使用 sslmode=verify-full 或 sslmode=verify-ca 設定,那麼憑證輪替不會影響你。 因此,您不需要遵循本節中的步驟。
- 確認你在應用程式中是否使用憑證固釘。
- 建立你信任根目錄中的憑證清單。 例如:
- 用程式化的方式在 Java 金鑰庫取得可信憑證清單。
- 檢查 Cacerts Java 金鑰庫是否已經包含所需的憑證。
- 當你有獨立的中間憑證或獨立的 PostgreSQL 伺服器憑證時,表示你正在使用憑證釘選。
- 若要移除憑證釘選,請從受信任的根存放區移除所有憑證,然後新增新的憑證。
- 你可以從 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
- 伺服器憑證