添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
更新应用程序以使用新的 SSL/TLS 证书连接到 Microsoft SQL Server 数据库实例 - Amazon Relational Database Service

更新应用程序以使用新的 SSL/TLS 证书连接到 Microsoft SQL Server 数据库实例

自 2023 年 1 月 13 日起,Amazon RDS 发布了新的证书颁发机构(CA)证书,以便使用安全套接字层或传输层安全性协议(SSL/TLS)连接到 RDS 数据库实例。接下来,您可以找到有关更新应用程序以使用新证书的信息。

本主题可帮助您确定是否有任何客户端应用程序使用 SSL/TLS 连接到您的数据库实例。如果是这样,您可以进一步检查这些应用程序是否需要证书验证才能连接。

注意

某些应用程序配置为仅在它们可以成功验证服务器上的证书时才连接到 SQL Server 数据库实例。

对于此类应用程序,您必须更新客户端应用程序信任存储,以包括新的 CA 证书。

更新客户端应用程序信任存储中的 CA 证书后,可以在数据库实例上轮换这些证书。强烈建议在生产环境中实现这些过程之前,先在开发或测试环境中测试它们。

有关证书轮换的更多信息,请参阅 轮换 SSL/TLS 证书 。有关下载证书的更多信息,请参阅 使用 SSL/TLS 加密与数据库实例或集群的连接 。有关对 Microsoft SQL Server 数据库实例使用 SSL/TLS 的信息,请参阅 将 SSL 与 Microsoft SQL Server 数据库实例结合使用

确定是否有任何应用程序使用 SSL 连接到 Microsoft SQL Server 数据库实例

检查数据库实例配置中 rds.force_ssl 参数的值。默认情况下, rds.force_ssl 参数设置为 0 (off)。如果 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 连接进行了加密:

sqlcmd

以下使用 sqlcmd 客户端的示例显示了如何检查脚本的 SQL Server 连接以确定成功的连接是否需要有效证书。有关更多信息,请参阅 Microsoft SQL Server 文档中的 使用 sqlcmd 进行连接

当使用 sqlcmd 时,如果您使用 -N 命令参数对连接进行加密,则 SSL 连接需要对服务器证书进行验证,如以下示例所示。

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

如果 sqlcmd 是使用 -C 选项调用的,则它将信任服务器证书,即使该证书与客户端信任存储不匹配也是如此。

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(); 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 加密与数据库实例或集群的连接