本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將應用程式更新為使用新的 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 連線使用加密:
-
啟動 SQL Server Management Studio。
-
在連線到伺服器中,輸入伺服器資訊、登入使用者名稱和密碼。
-
選擇 Options (選項)。
-
在連線頁面上,檢查是否已選取加密連線。
如需 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= 附加至連線字串,以直接提供信任的 CA 憑證檔案名稱。path-to-certificate-trust-store-file
注意
如果您在連線字串中使用 TrustServerCertificate=true (其對等設定),連線程序會略過信任鏈驗證。在此情況下,即使無法驗證憑證,應用程式還是會連線。使用 TrustServerCertificate=false 可強制憑證驗證,也是最佳實務。
更新應用程式信任存放區
您可以為使用 Microsoft SQL Server 的應用程式更新信任存放區。如需說明,請參閱加密特定連線。另外,請參閱 Microsoft SQL Server 文件中的設定用戶端的加密
如果您使用的作業系統不是 Microsoft Windows,請參閱有關 SSL/TLS 實作的軟體分發文件,以取得新增根 CA 憑證的相關資訊。例如,OpenSSL 和 GnuTLS 是常用的選項。使用實作方法將信任新增至 RDS 根 CA 憑證。Microsoft 提供在某些系統上設定憑證的相關指示。
如需下載根憑證的資訊,請參閱 使用 SSL/TLS 來加密資料庫執行個體或叢集的連線。
如需匯入憑證的範例指令碼,請參閱 將憑證匯入信任存放區的範例指令碼。
注意
更新信任存放區時,除了新增憑證,您還可以保留舊憑證。