SQL Server 和客户端加密摘要
本文概述了启用对 SQL Server 的加密的各种场景和相关过程,以及如何验证加密是否正常工作。
加密与服务器的所有连接(服务器端加密)
证书类型 | 在服务器属性中强制加密 | 在每个客户端上导入服务器证书 | 信任服务器证书设置 | 加密连接字符串中的属性 | 注释 |
---|---|---|---|---|---|
自签名证书 - 由 SQL Server 自动创建 | 是 | 无法完成 | 是 | 忽略 | SQL Server 2016 (13.x) 及更早版本使用 SHA1 算法。 SQL Server 2017 (14.x) 及更高版本使用 SHA256。 有关详细信息,请参阅 SQL Server 2017 中自签名证书的哈希算法的更改。 不建议将此方法用于生产用途。 |
使用 New-SelfSignedCertificate 或 makecert 创建的自签名证书 - 选项 1 | 是 | 否 | 是 | 忽略 | 不建议将此方法用于生产用途。 |
使用 New-SelfSignedCertificate 或 makecert 创建的自签名证书 - 选项 2 | 是 | 是 | 可选 | 忽略 | 不建议将此方法用于生产用途。 |
公司的证书服务器或来自不在参与者列表 - Microsoft 受信任的根程序 - 选项 1 中的证书颁发机构 (CA) | 是 | 否 | 是 | 忽略 | |
公司的证书服务器或来自不在参与者列表 - Microsoft 受信任的根程序 - 选项 2 中的证书颁发机构 (CA) | 是 | 是 | 可选 | 忽略 | |
受信任的根颁发机构 | 是 | 否 | 可选 | 忽略 | 建议采用此方法。 |
加密来自特定客户端的连接
证书类型 | 在服务器属性中强制加密 | 在每个客户端上导入服务器证书 | 在客户端上指定信任服务器证书设置 | 在客户端将加密属性手动指定为“是”/“True” | 注释 |
---|---|---|---|---|---|
自签名证书 - 由 SQL Server 自动创建 | 是 | 无法完成 | 是 | 忽略 | SQL Server 2016 (13.x) 及更早版本使用 SHA1 算法。 SQL Server 2017 (14.x) 及更高版本使用 SHA256。 有关详细信息,请参阅 SQL Server 2017 中自签名证书的哈希算法的更改。 不建议将此方法用于生产用途。 |
使用 New-SelfSignedCertificate 或 makecert 创建的自签名证书 - 选项 1 | 否 | 否 | 是 | 是 | 不建议将此方法用于生产用途。 |
使用 New-SelfSignedCertificate 或 makecert 创建的自签名证书 - 选项 2 | 否 | 是 | 可选 | 是 | 不建议将此方法用于生产用途。 |
公司的证书服务器或来自不在参与者列表 - Microsoft 受信任的根程序 - 选项 1 中的 CA | 否 | 否 | 是 | 是 | |
公司的证书服务器或来自不在参与者列表 - Microsoft 受信任的根程序 - 选项 2 中的 CA | 否 | 是 | 可选 | 是 | |
受信任的根颁发机构 | 否 | 否 | 可选 | 是 | 建议采用此方法。 |
如何判断加密是否正常工作?
可以使用 Microsoft 网络监视器或网络探测器等工具来监视通信,并检查该工具中捕获的数据包的详细信息,以确认流量已加密。
或者,可以使用 Transact-SQL (T-SQL) 命令来检查 SQL Server 连接的加密状态。 为此,请执行以下步骤:
- 在 SQL Server Management Studio (SSMS) 中打开一个新的查询窗口,并连接到 SQL Server 实例。
- 执行以下 T-SQL 命令以检查
encrypt_option
列的值。 对于加密连接,该值为TRUE
。
SELECT * FROM sys.dm_exec_connections