將應用程式更新為使用新的 SSL/TLS 憑證來連線至 Microsoft SQL Server 資料庫執行個體 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將應用程式更新為使用新的 SSL/TLS 憑證來連線至 Microsoft SQL Server 資料庫執行個體

自 2023 年 1 月 13 日起,Amazon RDS 已發佈新的憑證認證機構 (CA) 憑證,使用 Secure Socket Layer 或 Transport Layer Security (SSL/TLS) 來連線至 RDS 資料庫執行個體。接下來,您可以找到更新應用程式使用新憑證的相關資訊。

本主題可協助您判斷任何用戶端應用程式是否使用 SSL/TLS 連線至您的資料庫執行個體。若是如此,您可以進一步檢查那些應用程式是否需要驗證憑證才能連線。

注意

有些應用程式設定為只有在成功驗證伺服器上的憑證時,才能連線至 SQL Server 資料庫執行個體。

對於這些應用程式,您必須更新用戶端應用程式信任存放區來包含新的 CA 憑證。

更新用戶端應用程式信任存放區中的 CA 憑證之後,您就可以在資料庫執行個體輪換憑證。強烈建議先在開發或預備環境中測試這些步驟,再於生產環境中實作。

如需憑證輪換的詳細資訊,請參閱輪換您的 SSL/TLS 憑證。如需下載憑證的詳細資訊,請參閱使用 SSL/TLS 來加密資料庫執行個體或叢集的連線。如需對 Microsoft SQL Server 資料庫執行個體使用 SSL/TLS 的資訊,請參閱對 Microsoft SQL Server 資料庫執行個體使用 SSL

判斷任何應用程式是否使用 SSL 連線至 Microsoft SQL Server 資料庫執行個體

在資料庫執行個體組態中檢查 rds.force_ssl 參數的值。依預設,rds.force_ssl 參數會設為 0 (關閉)。如果 rds.force_ssl 參數設為 1 (開啟),則用戶端需要使用 SSL/TLS 進行連線。如需參數群組的詳細資訊,請參閱Amazon RDS 的參數群組

執行下列查詢,以取得資料庫執行個體的所有已開啟連線的目前加密選項。如果連線已加密,ENCRYPT_OPTION 欄會傳回 TRUE

select SESSION_ID, ENCRYPT_OPTION, NET_TRANSPORT, AUTH_SCHEME from SYS.DM_EXEC_CONNECTIONS

此查詢只顯示目前連線。不會指出過去曾經連線又中斷連線的應用程式是否使用 SSL。

判斷用戶端是否需要驗證憑證才能連線

您可以檢查不同類型的用戶端是否需要驗證憑證才能連線。

注意

如果您使用的連接器未列出,請參閱特定連接器的文件,以取得該連接器如何強制使用加密連線的相關資訊。如需詳細資訊,請參閱 Microsoft SQL Server 文件中的 Microsoft SQL 資料庫的連線模組

SQL Server Management Studio

檢查是否強制 SQL Server Management Studio 連線使用加密:

  1. 啟動 SQL Server Management Studio。

  2. 連線到伺服器中,輸入伺服器資訊、登入使用者名稱和密碼。

  3. 選擇 Options (選項)

  4. 在連線頁面上,檢查是否已選取加密連線

如需 SQL Server Management Studio 的詳細資訊,請參閱使用 SQL Server Management Studio

Sqlcmd

以下 sqlcmd 用戶端範例會示範如何檢查指令碼的 SQL Server 連線,以判斷成功的連線是否需要有效憑證。如需詳細資訊,請參閱 Microsoft SQL Server 文件中的使用 sqlcmd 進行連線

使用 sqlcmd 用戶端時,如果您使用 -N 命令引數來加密連線,則需要以伺服器憑證來驗證 SSL 連線,如下列範例所示。

$ sqlcmd -N -S dbinstance.rds.amazon.com -d ExampleDB
注意

如果是以 -C 選項叫用 sqlcmd,即使伺服器憑證不符合用戶端信任存放區,還是會受到信任。

ADO.NET

在下列範例中,應用程式使用 SSL 進行連線,且必須驗證伺服器憑證。

using SQLC = Microsoft.Data.SqlClient; ... static public void Main() { using (var connection = new SQLC.SqlConnection( "Server=tcp:dbinstance.rds.amazon.com;" + "Database=ExampleDB;User ID=LOGIN_NAME;" + "Password=YOUR_PASSWORD;" + "Encrypt=True;TrustServerCertificate=False;" )) { connection.Open(); ... }

Java

在下列範例中,應用程式使用 SSL 進行連線,且必須驗證伺服器憑證。

String connectionUrl = "jdbc:sqlserver://dbinstance.rds.amazon.com;" + "databaseName=ExampleDB;integratedSecurity=true;" + "encrypt=true;trustServerCertificate=false";

對於使用 JDBC 連接的用戶端,若要啟用 SSL 加密,您可能需要將 Amazon RDS 憑證新增至 Java CA 憑證存放區。如需說明,請參閱 Microsoft SQL Server 文件中的設定用戶端的加密。您也可以將 trustStore=path-to-certificate-trust-store-file 附加至連線字串,以直接提供信任的 CA 憑證檔案名稱。

注意

如果您在連線字串中使用 TrustServerCertificate=true (其對等設定),連線程序會略過信任鏈驗證。在此情況下,即使無法驗證憑證,應用程式還是會連線。使用 TrustServerCertificate=false 可強制憑證驗證,也是最佳實務。

更新應用程式信任存放區

您可以為使用 Microsoft SQL Server 的應用程式更新信任存放區。如需說明,請參閱加密特定連線。另外,請參閱 Microsoft SQL Server 文件中的設定用戶端的加密

如果您使用的作業系統不是 Microsoft Windows,請參閱有關 SSL/TLS 實作的軟體分發文件,以取得新增根 CA 憑證的相關資訊。例如,OpenSSL 和 GnuTLS 是常用的選項。使用實作方法將信任新增至 RDS 根 CA 憑證。Microsoft 提供在某些系統上設定憑證的相關指示。

如需下載根憑證的資訊,請參閱 使用 SSL/TLS 來加密資料庫執行個體或叢集的連線

如需匯入憑證的範例指令碼,請參閱 將憑證匯入信任存放區的範例指令碼

注意

更新信任存放區時,除了新增憑證,您還可以保留舊憑證。