将 SSL 与 Microsoft SQL Server 数据库实例结合使用
可使用安全套接字层 (SSL) 对客户端应用程序和运行 Microsoft SQL Server 的 Amazon RDS 数据库实例之间的连接进行加密。对于所有支持的 SQL Server 版本,所有 Amazon 区域提供了 SSL 支持。
在您创建 SQL Server 数据库实例时,Amazon RDS 会为其创建 SSL 证书。SSL 证书会将数据库实例终端节点作为 SSL 证书的公用名 (CN) 包含在内以防止欺诈攻击。
使用 SSL 连接到 SQL Server 数据库实例有两种方法:
-
强制所有连接使用 SSL — 这种方法对客户端是透明的,客户端不需要为使用 SSL 而执行任何操作。
注意
当您将
rds.force_ssl
设置为1
并使用 SSMS 版本 19.3、20.0 和 20.2 时,请检查以下各项:-
在 SSMS 中启用信任服务器证书。
-
将证书导入您的系统。
-
-
加密特定连接 — 这种方法在特定客户端计算机上设置 SSL 连接,您必须在客户端上执行加密连接的操作。
有关 SQL Server 的传输层安全性 (TLS) 支持的信息,请参阅 Microsoft SQL Server 的 TLS 1.2 支持
强制与数据库实例的连接使用 SSL
您还可强制与数据库实例的所有连接使用 SSL。如果强制所有连接使用 SSL,则对客户端是透明的,客户端不需要为使用 SSL 而执行任何操作。
如果要强制使用 SSL,请使用 rds.force_ssl
参数。默认情况下,rds.force_ssl
参数设置为 0 (off)
。将 rds.force_ssl
参数设置为 1 (on)
可强制连接使用 SSL。由于 rds.force_ssl
参数是静态的,因此,在更改值后,您必须重启数据库实例才能使更改生效。
强制与数据库实例的所有连接都使用 SSL
-
确定附加到数据库实例的参数组:
登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在 Amazon RDS 控制台的右上角,选择数据库实例的Amazon区域。
-
在导航窗格中,选择数据库,然后选择数据库实例的名称以显示其详细信息。
-
选择 Configuration 选项卡。在此部分中查找参数组。
-
如果需要,可创建新的参数组。如果数据库实例使用默认参数组,则必须创建新的参数组。如果数据库实例使用非默认参数组,则可以选择编辑现有参数组或创建新的参数组。如果您编辑现有参数组,则更改将影响使用该参数组的所有数据库实例。
要创建新的参数组,请按照在 Amazon RDS 中创建数据库参数组中的说明执行操作。
-
编辑新的或现有的参数组以将
rds.force_ssl
参数设置为true
。要编辑参数组,请按照在 Amazon RDS 中修改数据库参数组中的参数中的说明执行操作。 -
如果您创建了一个新的参数组,可修改数据库实例以附加该新参数组。修改数据库实例的 DB Parameter Group 设置。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。
-
重启数据库实例。有关更多信息,请参阅“重启中的数据库实例”。
加密特定连接
您可以强制与数据库实例的所有连接使用 SSL,也可以仅加密来自特定客户端计算机的连接。要在特定客户端中使用 SSL,您必须获取客户端计算机的证书、在客户端计算机中导入证书,然后加密来自该客户端计算机的连接。
注意
在 2014 年 8 月 5 日之后创建的所有 SQL Server 实例都在 SSL 证书的公用名 (CN) 字段中使用数据库实例终端节点。在 2014 年 8 月 5 日之前,SSL 证书验证不可用于基于 VPC 的 SQL Server 实例。如果您具有在 2014 年 8 月 5 日之前创建的基于 VPC 的 SQL Server 数据库实例,而且要使用 SSL 证书验证并确保实例终端节点作为该数据库实例 SSL 证书的 CN 包括在内,请重命名该实例。当您重命名数据库实例时,新证书会进行部署,并且实例会重启以启用新证书。
获取客户端计算机的证书
要对从客户端计算机到运行 Microsoft SQL Server 的 Amazon RDS 数据库实例的连接进行加密,您需要客户端计算机上的证书。
要获取该证书,请将该证书下载到客户端计算机。有关下载证书的更多信息,请参阅使用 SSL/TLS 加密与数据库实例或集群的连接。
下载适当的证书后,使用以下部分中的过程将该证书导入 Microsoft Windows 操作系统。
将证书导入客户端计算机
您可以使用以下过程将证书导入客户端计算机上的 Microsoft Windows 操作系统。
将证书导入 Windows 操作系统:
-
在 Start (开始) 菜单上的搜索框中,键入
Run
,然后按 Enter。 -
在 Open (打开) 框中,键入
MMC
,然后选择 OK (确定)。 -
在 MMC 控制台中的 File 菜单上,选择 Add/Remove Snap-in。
-
在 Add or Remove Snap-ins (添加或删除管理单元) 对话框中,对于 Available snap-ins (可用管理单元),选择
Certificates
,然后选择 Add (添加)。 -
在 Certificates snap-in 对话框中,选择 Computer account,然后选择 Next。
-
在 Select computer 对话框中,选择 Finish。
-
在 Add or Remove Snap-ins 对话框中,选择 OK。
-
在 MMC 控制台中,展开 Certificates,打开 Trusted Root Certification Authorities 的上下文 (右键单击) 菜单,选择 All Tasks,然后选择 Import。
-
在证书导入向导的第一页上,选择 Next。
-
在证书导入向导的第二页上,选择 Browse。在浏览窗口中,将文件类型更改为 All files (*.*) (所有文件 (*.*)),因为 .pem 不是标准证书扩展名。找到您之前下载的 .pem 文件。
-
选择 Open 以选择证书文件,然后选择 Next。
-
在证书导入向导的第三页上,选择 Next。
-
在证书导入向导的第四页上,选择 Finish。这将显示一个指示导入已成功的对话框。
-
在 MMC 控制台中,展开 Certificates,再展开 Trusted Root Certification Authorities,然后选择 Certificates。找到证书以确认其存在,如此处所示。
对与运行 Microsoft SQL Server 的 Amazon RDS 数据库实例的连接进行加密
将证书导入客户端计算机后,您可以对从客户端计算机到运行 Microsoft SQL Server 的 Amazon RDS 数据库实例的连接进行加密。
对于 SQL Server Management Studio,使用以下过程。有关 SQL Server Management Studio 的更多信息,请参阅使用 SQL Server Management Studio
对来自 SQL Server Management Studio 的连接进行加密
-
启动 SQL Server Management Studio。
-
为 Connect to server 键入服务器信息、登录用户名和密码。
-
选择 Options。
-
选择 Encrypt connection。
-
选择 Connect。
-
通过运行以下查询确认连接已加密。验证查询为
true
返回encrypt_option
。select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
对于任何其他 SQL 客户端,请使用以下过程。
对来自其他 SQL 客户端的连接进行加密
-
向连接字符串追加
encrypt=true
。在 GUI 工具的连接页上,此字符串可能以选项或属性形式提供。注意
要为使用 JDBC 进行连接的客户端启用 SSL 加密,您可能需要将 Amazon RDS SQL 证书添加到 Java CA 证书 (cacerts) 存储。可通过使用 keytool
实用程序执行该操作。 -
通过运行以下查询确认连接已加密。验证查询为
true
返回encrypt_option
。select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID