本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用新的 SSL/TLS 憑證更新應用程式以連線至 Microsoft SQL Server 資料庫執行個體
自 2023 年 1 月 13 日起,Amazon RDS已發佈新的憑證授權機構 (CA) 憑證,用於使用 Secure Socket Layer 或 Transport Layer Security RDS (SSL/) 連線至資料庫執行個體TLS。接下來,您可以找到更新應用程式使用新憑證的相關資訊。
本主題可協助您判斷任何用戶端應用程式是否使用 SSL/TLS 連線到資料庫執行個體。若是如此,您可以進一步檢查那些應用程式是否需要驗證憑證才能連線。
注意
某些應用程式只有在可以成功驗證SQL伺服器上的憑證時,才會設定為連線至伺服器資料庫執行個體。
對於這些應用程式,您必須更新用戶端應用程式信任存放區來包含新的 CA 憑證。
更新用戶端應用程式信任存放區中的 CA 憑證之後,您就可以在資料庫執行個體輪換憑證。強烈建議先在開發或預備環境中測試這些步驟,再於生產環境中實作。
如需憑證輪換的詳細資訊,請參閱輪換您的 SSL/TLS 憑證。如需下載憑證的詳細資訊,請參閱使用 SSL/TLS 加密與資料庫執行個體或叢集的連線。如需搭配 Microsoft SQL Server 資料庫執行個體使用 SSL/TLS 的相關資訊,請參閱 SSL 搭配 Microsoft SQL Server 資料庫執行個體使用。
判斷是否有任何應用程式使用 連線至您的 Microsoft SQL Server 資料庫執行個體 SSL
在資料庫執行個體組態中檢查 rds.force_ssl
參數的值。依預設,rds.force_ssl
參數會設為 0 (關閉)。如果 rds.force_ssl
參數設定為 1 (開啟),用戶端需要使用 SSL/TLS 進行連線。如需參數群組的詳細資訊,請參閱 的參數組 RDS。
執行下列查詢,以取得資料庫執行個體的所有已開啟連線的目前加密選項。如果連線已加密,ENCRYPT_OPTION
欄會傳回 TRUE
。
select SESSION_ID, ENCRYPT_OPTION, NET_TRANSPORT, AUTH_SCHEME from SYS.DM_EXEC_CONNECTIONS
此查詢只顯示目前連線。它不會顯示過去已連線和中斷連線的應用程式是否使用 SSL。
判斷用戶端是否需要驗證憑證才能連線
您可以檢查不同類型的用戶端是否需要驗證憑證才能連線。
注意
如果您使用的連接器未列出,請參閱特定連接器的文件,以取得該連接器如何強制使用加密連線的相關資訊。如需詳細資訊,請參閱 Microsoft 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伺服器連線,以判斷成功的連線是否需要有效的憑證。如需詳細資訊,請參閱 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";
若要為使用 連線的用戶端啟用SSL加密JDBC,您可能需要將 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 加密與資料庫執行個體或叢集的連線。
如需匯入憑證的範例指令碼,請參閱 將憑證匯入信任存放區的範例指令碼。
注意
更新信任存放區時,除了新增憑證,您還可以保留舊憑證。