我需要证明我们应用的连接字符串中的加密设置正常。
验证从我们的网站到SQL Server的流量实际上是加密的最简单方法是什么?
答案 0 :(得分:26)
您可以使用类似Wireshark的内容来查看通过网络传输的数据包
答案 1 :(得分:12)
您检查sys.dm_exec_connections
DMV的encrypt_option
列。这样,您不仅可以证明已加密,还可以在启动时在应用程序中进行验证。要执行加密,请遵循此MSDN How To: Enable Encrypted Connections to the Database Engine中所述的方法。如果客户端或服务器强制加密并提供证书并且客户端接受服务器证书,则连接将被加密。要验证流量是否已加密,您可以使用内置的netmon.exe工具(必须从广告/删除系统组件安装),下载改进的Microsoft Network Monitor 3.2或其他第三方工具。
作为替代方案,部署站点可以强制执行IPSec加密。
答案 2 :(得分:7)
我会在数据库连接字符串中将Force Protocol Encryption设置为true并将Trust Server Certificate设置为true。如果服务器无法按要求为您提供加密连接,则应该无法建立连接。有一个article涵盖了sql server 2005及更高版本的加密。
简单测试是尝试使用和不使用加密的连接,并在发出不需要的连接类型时失败。然后由DBA,IT或您配置服务器以满足您的要求。
答案 3 :(得分:1)
微软本身还有另一个被低估的工具:'Microsoft Network Monitor'。基本上这与wireshark非常相似,除了一些特定的MS协议比wireshark本身具有更好的解析器和可视化支持,显然它只能在windows下运行;-)。
这个工具已经很老了,看起来已经废弃了(到目前为止还没有看到过更新版本),但仍然做得很好,定义新协议的语法非常整洁/有趣 - 所以这仍然具有很大的功能未来。
分析示例 - 针对TDS过滤记录 - 因此其他数据包主要被丢弃:
对于sql server连接也是如此。 MNM甚至可以通过电线显示结果集 - 非常简洁。尽管如此,如上所述的wireshark足以验证加密并在线路上应用证书。意味着它可以完全理解TDS-Protocoll。
处理TLS
还有一个扩展(所谓的专家)'NmDecrypt'和正确的证书(包括私钥) - 它可以解密协议 - 对于使用TDS INSIDE TDS的TDS来说非常好 - 难怪 - 没有人真的实现了作为wireshark的完全支持的协议;)
工具的链接:
答案 4 :(得分:0)
为了保证正在使用加密,您需要在服务器上enable the force encryption option。
客户端加密不是强制性的。服务器端是强制性的。
当SQL Server服务启动时,如果它无法读取证书或存在其他障碍,它将停止。它不接受未加密的连接。
要回答,我使用了第一个使用加密检查的数据包嗅探器,然后我只依赖服务器端加密是强制性的,SQL无法启动。
请记住,有一个电流 启用时SQL Server限制 服务器上的加密。加密 所有传入连接的 。 如果在客户端上启用加密 计算机,所有传出连接 从该客户尝试来制作 与任何SQL的加密连接 服务器
延迟编辑:
使用旧版本的MS JDBC客户端:它无法处理服务器端加密......