好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

不制作证书是否能加密SQLSERVER与客户端之间传输的数据?

不 制作 证书 是否 能 加密 SQLSERVER与 客户 端 之间 传输 的 数据 ? 在做实验之前请先下载network monitor抓包工具 微软官网下载: http://www.microsoft.com/en-us/download/details.aspx?id=4865 Microsoft Network Monitor 这是微软提供的网络抓包工具

不 制作 证书 是否 能 加密 SQLSERVER与 客户 端 之间 传输 的 数据 ?

在做实验之前请先下载network monitor抓包工具

Microsoft Network Monitor
这是微软提供的网络抓包工具

虽然它是微软提供的,但所有的协议parser解析代码全部都是开源的,采用其支持的特有脚本语言编写,易理解、易扩展;

它自带协议parser比较全面,同时有一个开源社区提供持续支持;

另外,它也提供API帮助我们开发自己的网络抓包、协议分析工具。

针对TDS协议解析需求:
Network Monitor自带TDS协议解析器和UI比较友好
Network Monitor自带TDS协议解析器在解析和结果展示方面更全面,以下是一个画面片段,显示了一个SQL Batch包。

先了解一下SQLSERVER的 加密 阶段

一共有两个阶段

在 认证阶段 ,SQLSERVER会使用自生成的自签名 证书 , 加密 客户 端发过来的登陆用户名和密码

在 数据 传输 阶段 ,如果不使用 证书 ,那么 数据 是使用明文在网络上进行传送的

大家可以看一下这篇文章:

SQL Server 连接 加密 (1) -- SQL Server connection encyption

网上有很多 制作 证书 的教程,但是 制作 证书 都比较麻烦, 客户 端和服务器端都要弄很多东西。

详细 制作 证书 的过程可以参考园子里的这篇文章:

在SQL Server 2005 中开启SSL(图文结合)

当然这篇文章不是讲解这个network monitor抓包工具的,所以轻轻带过就算了

那么,不 制作 证书 怎么 加密 传输 的 数据 啊????

答案就是:同样使用在认证阶段的自生成的自签名 证书

详细步骤:

步骤1:在SQLSERVER服务器端这边设置强行 加密

步骤2:重启SQLSERVER,只有重启SQLSERVER设置才能生效

步骤3:打开network monitor,新建一个capture

步骤4:启动capture,开始捕获

步骤5:在 客户 端这边连上服务器端的SQLSERVER,然后你会在network monitor里的看到SSMS这个进程已经出现在Network Conversations窗口

步骤6:选中他,你会在Frame Summary窗口看到帧信息

步骤7:如果你在服务器端开启了[强行 加密 ],那么收到的 数据 包都会是 加密 的

大家在Protocol Name这一栏看到的是TLS协议,而不会是TDS协议

步骤8:查看帧 数据

步骤9:如果没有 加密 的明文 数据 ,network monitor就能够查看出来,并且Protocol Name这一栏显示的是TDS协议,因为 数据 包并没有使用TLS协议进行封装

TIPS :当关闭了SSMS的查询窗口之后,连接还是存在的

很多人会问,关闭了连接,怎么连接还存在, 客户 端为什么还会跟服务器端进行通信?????

实际上,这个是 客户 端 的连接池机制, 客户 端不断发送keep alive 数据 包给服务器,下次有同样的连接进行重用了,不需要再进行三次握手o(∩_∩)o

总结

本人介绍了不使用 制作 证书 的方式来对 传输 的 数据 进行 加密 的方法,实际上设置 客户 端而不设置服务器端也是可以的

不过设置 客户 端比较麻烦,还需要在连接字符串里加上encrypt属性设置为Yes

设置服务器端和设置 客户 端的 加密 的区别

服务器端 :所有的连接都是 加密 的

客户 端 :只是设置了 加密 的那个连接是 加密 的,其他没有设置 加密 的连接依然是明文 传输 数据

当然,使用SQLSERVER自生成的 证书 安全性是不及自己 制作 的 证书 的安全性高!!

相关连接:

加密 与 SQL Server 的连接

使用 自签名 证书 加密 的 SSL 连接不提供强安全性。它们容易在 传输 中途受到攻击。在生产环境中或在连接到 Internet 的服务器上,不应依赖使用自签名 证书 的 SSL。

始终要对 客户 端应用程序与 SQL Server 连接时 传输 的凭据(在登录 数据 包中)进行 加密 。SQL Server 将使用可信 证书 颁发机构颁发的 证书 (如果可用)。如果未安装可信 证书 ,则在启动实例时 SQL Server 将生成自签名 证书 ,并使用自签名 证书 对凭据进行 加密 。自签名 证书 有助于提高安全性,但它不提供针对通过服务器进行的身份欺骗的保护。如果使用自签名 证书 ,并且 ForceEncryption 选项的值设置为[是],则将使用自签名 证书 对通过网络在 SQL Server 和 客户 端应用程序 之间 传输 的所有 数据 进行 加密

有关SQL server connection Keep Alive 的FAQ(3)

有关SQL server connection Keep Alive 的FAQ(2)

有关SQL server connection Keep Alive 的FAQ(1)

SQL Server 连接 加密 (1) -- SQL Server connection encyption

SQL Server 连接 加密 (2) -- SQL Server connection encyption

如有不对的地方,欢迎大家拍砖o(∩_∩)o

查看更多关于不制作证书是否能加密SQLSERVER与客户端之间传输的数据?的详细内容...

  阅读:40次