更新应用程序以使用新的 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
。
此查询仅显示当前连接。它没有显示过去已连接并断开连接的应用程序是否使用了 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
是使用
-C
选项调用的,则它将信任服务器证书,即使该证书与客户端信任存储不匹配也是如此。
要为使用 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 加密与数据库实例或集群的连接 。