为加密连接SQL Server部署证书
去年,我们获得了确保与SQL Server实例的加密连接的要求。 以前,我们认为没有必要-应用程序服务在内部访问了所有实例。 尽管如此,安全连接仍然可以保护实例和客户端免受中间人的攻击,因此我们做到了。
连接加密与透明数据加密不同,但是在两种情况下都需要证书。 在本文中,我们描述了为SQL Server实例设置加密连接的过程。
在MMC中设置证书管理单元
证书是经过数字签名的文档,其中包含对连接进行加密的公用密钥和专用密钥。 公钥和私钥是“密钥对” –公钥加密数据,只有私钥才能解密它们。
证书由证书颁发机构颁发,证书颁发机构是服务器和客户端都信任的实体。 在我们的例子中,我们从托管SQL Server的服务器生成了一个证书。
我们通过启动Microsoft管理控制台(mmc.exe)开始此过程。
启动MMC时,我们导航到File> Add and Remove Snap-ins ...(图1)。 在这里,我们将“证书管理器”管理单元添加到控制台以管理服务器上的证书。 请注意,还有其他方法可以达到这一点。
图1:添加或删除管理单元
我们希望通过一种计算机帐户管理证书的方式,以便其他管理员在需要管理证书时也不会遇到任何权限问题(图2)。
图2:用户计算机帐户
在本文中,我们将在安装SQL Server实例的本地计算机上管理证书(图3)。
Figure 3: 管理本地计算机
图4:选定的管理单元-证书
一旦完成了证书管理单元的创建过程,便可以使用它。
首先选择所有任务>请求新证书:
图5:请求新证书
注册证书
图5中的操作将启动一个向导–我们将快速运行它。 详细信息与Windows管理员更为相关,但是关键是要获取SQL Server可以使用的有效证书。
验证必要条件:
图6:证书注册向导
选择一个注册策略和所需的证书类型。 在本例中,我们选择了由域管理员配置的策略,以实现此类目的。 您可以与域管理员联系,以定义环境中的最佳选项。
图7:证书注册策略
图8:证书类型
图9:注册的证书
证书注册是从证书颁发机构请求数字证书的过程。 在某些环境中,CA是公钥基础结构的一部分。
图10:证书详细信息
配置SQL Server
现在,当我们拥有证书时,我们转到SQL Server并将其配置为使用该证书。
打开SQL Server配置管理器并浏览SQL Server网络配置> MS SQL Server协议。
右键单击此项目,然后从下拉菜单中选择属性(图11):
图11:SQL Server协议
l 在``属性''窗口中,选择``证书''选项卡。 如果您正确完成了证书注册,则应该在标签为``证书''的下拉菜单中看到它的列出(图12)。 通过这样做,我们将此证书与SQL Server实例相关联。 请注意,我们还可以在SQL Server配置管理器中查看证书详细信息。
图12:将证书与SQL Server关联
l 应用完有效证书后,我们将转到``标签''选项卡并将``强制加密''标志设置为``是''。 它确保对与SQL Server的所有连接进行加密。
图13:强制加密
SQL Server用于连接加密的加密协议将取决于操作系统配置。 然后,您应该重新启动SQL Server实例。 它在此之后加载此新证书。
我们可以在Windows Event Viewer中查看数据-SQL Server错误日志。 我们还可以使用Sys Internals中的Network Monitor之类的工具来验证连接的加密(图14)。
图14:使用网络监视器
结论
在关注安全性的组织中,通常需要加密连接。 在本文中,我们分享了有关如何在SQL Server上配置加密连接的经验。
我们的方法包括注册证书,将该证书应用于SQL Server实例以及启用强制加密。 必须注意的一点是,当您在SQL Server中将“强制加密”设置为“是”时,所有连接到该实例的客户端都必须使用相同的加密协议。