SQL Server 连接加密 (2) — SQL Server connection encyption
上篇文章 中我们讲到了 SQL Server 在建立连接时的加密。今天我们继续讨论 SQL Server 在建立完连接后在该连接上的数据传送加密。 默认情况下 SQL Server 是否加密收发的数据包 答案是否定的。 SQL Server 默认只在建立连接时进行加密以保护客户端发送过来的账户登录信息 在上篇文章中所做的实验,我们可以看到 SSL 已经启用,并且在所有网络包中都找不到密码的明文。但是如果你选中任意一个 TDS:SQLBatch 的数据包,你可以看到类似如下的结果: 可以清楚的看到客户端发送的查询语句。如果你查看 SQL Server 返回来的数据包的话,你也同样能看到查询结果的数据明文。那么怎么来加密客户端和 SQL Server 之间传输的数据呢? 加密 SQL Server 收发的数据包 我们可以通过 SQL Server 的 configuration Manager 来配置 SQL Server 使得它加密和客户端之间的数据交换。在 Configuration Manager 中分别有两个地方来配置。 1. SQL Server 服务器端的加密配置。 如上图所示,右键点击“ Protocols for MSSQLSERVER ”,选择属性,你就可以看到 Force Encryption 选项。默认状态下这个选项是设置为 No 的,也就是说 SQL Server 不进行加密。 当把该选项设置为 on 之后, SQL Server 就会要求对所有它和客户端之间的数据包传送进行加密,无论客户端是否配置为要求加密。此时用来加密的秘钥仍旧是之前在建立连接阶段使用的证书。 需要注意的是,如果你是手动配置证书给 SQL Server 的话,你可能会发现一个现象。即使该证书已经过了有效期,或者该证书的根证书不受客户端的信任,客户端仍旧可以顺利的使用这个证书和 SQL Server 进行交流。这是一个 by desing 的行为。如果你要求你的客户端一定要信任该证书才可以连接的话,你就必须要配置客户端的加密选项。 如果你对如何手动配置证书不熟悉的话,可以参考 这篇文章 。 2.
Read more:
SQL Server 连接加密 (2) — SQL Server connection encyption


