本文汇总了各种方案和关联过程,这些过程用于启用对 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 | 是的 | 是的 | 可选 | 忽略 | 不建议使用此方法供生产使用。 |
公司证书服务器或来自未列入参与者列表的证书颁发机构(CA)- Microsoft受信任根计划 - 选项 1 | 是的 | 否 | 是的 | 忽略 | |
公司的证书服务器或来自不在参与者列表中的证书颁发机构 (CA) - Microsoft受信任的根计划 - 选项 2 | 是的 | 是的 | 可选 | 忽略 | |
受信任的根证书认证机构 | 是的 | 否 | 可选 | 忽略 | 建议采用此方法。 |
加密来自特定客户端的连接
证书类型 | 在服务器属性中强制加密 | 在每个客户端上导入服务器证书 | 在客户端上指定信任服务器证书设置 | 在客户端手动将加密属性指定为 Yes/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 受信任根计划参与者列表中的 CA - 选项 1 | 否 | 否 | 是的 | 是的 | |
公司的证书服务器或来自不在 参与者列表中的 CA - Microsoft受信任的根计划 - 选项 2 | 否 | 是的 | 可选 | 是的 | |
受信任的根颁发机构 | 否 | 否 | 可选 | 是的 | 建议采用此方法。 |
如何判断加密是否正常工作?
可以使用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;