为SQL Server配置连接加密
Posted 格瑞趋势技术团队
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为SQL Server配置连接加密相关的知识,希望对你有一定的参考价值。
前言
很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理。
连接加密
首先,连接加密不是透明数据加密,很多人经常把两个概念混淆。连接加密是指客户端程序和SQL Server通信时的加密,保护数据在传输过程中的安全。
连接加密是SQL Server的TDS协议和TLS协议结合完成的,是在客户端驱动程序(ADO.NET、JDBC、OLEDB等)和SQL Server服务端实现的,对于上层的应用程序是透明的。
服务器端配置
打开SQL Server配置管理器,在SQL Server网络配置节点下,选择要启用加密连接的实例,右键,选择“属性”,在弹出的窗口中配置强行加密。确定后,重启SQL Server服务。
![](https://image.cha138.com/20230304/ecbe3291850e4ff98f99c3ee4d1e4346.jpg)
通过视图sys.dm_exec_connections的encrypt_option属性可以看到所有的连接都已经加密了。
![](https://image.cha138.com/20230304/c12c0ab754fb476da4896f283d422feb.jpg)
说明:如果是SQL Server故障转移群集或者AlwaysOn,每个节点都需要配置。
客户端配置
在服务器端启动强制加密是最简单的方法,如果前端应用程序使用非常老的数据库驱动程序,不支持TLS协议,无法正常连接数据库,例如低版本的PB、DELPHI等。另外,基于网络抓包分析的审计软件也无法工作。在这种情况下,可以在客户端进行有选择性地配置。
通过在数据库连接字符串中增加Encrypt和TrustServerCertificate两个关键词来实现。
![](https://image.cha138.com/20230304/0535684af2c249489f0fc1546188ba9b.jpg)
JDBC
![](https://image.cha138.com/20230304/b9f9a7443e664a17b9d31e9119d5253d.jpg)
SQL Server Management Studio
![](https://image.cha138.com/20230304/e70dcb68db9a45599b81213c13edf52d.jpg)
老版本SQL Server Management Studio
![](https://image.cha138.com/20230304/5a8248b3d9f8404a820377c3bf143733.jpg)
配置证书
无论是在服务端还是客户端配置连接加密,都需要使用证书。默认情况下,SQL Server会生成自签名证书,在ERROR_LOG中可以看到一条“已成功加载自行生成的证书以进行加密”的日志。
![](https://image.cha138.com/20230304/522af128bfbb4aaa989befeadea0e88b.jpg)
大多数情况下,使用自签名证书就足够了。如果想使用CA机构颁发的第三方证书,可按照以下步骤配置。
运行mmc打开控制台,添加证书管理。
![](https://image.cha138.com/20230304/6d45b8e9d632473a97c6d98ea5aef77e.jpg)
![](https://image.cha138.com/20230304/1959e30998424d3580772bfcd0915036.jpg)
![](https://image.cha138.com/20230304/e85dee20226a4c438bda421d5f92a41d.jpg)
在“个人”节点下按照向导导入证书。
![](https://image.cha138.com/20230304/e5ced73af2d8441ca3c29cc05c2c2a43.jpg)
![](https://image.cha138.com/20230304/8e5af70307b345559fc445e903b43c74.jpg)
![](https://image.cha138.com/20230304/ebe4454c39a8498fb307218a0e8f04d3.jpg)
![](https://image.cha138.com/20230304/c4e73c2ac56b4db69d3c9821e9c13e7e.jpg)
![](https://image.cha138.com/20230304/83ef9e1c2b1b406ba89ae18611f6f3ce.jpg)
![](https://image.cha138.com/20230304/347f477f38cc442b8cef14c3d27a04f2.jpg)
注意:导入证书的使用者属性必须与服务器的完全限定域名 (FQDN) 一致。如果是SQL Server故障转移群集,要和虚拟服务器的FQDN一致。
![](https://image.cha138.com/20230304/02e80b674a454b7a9c3181b48a481bb5.jpg)
为SQL Server启动账号配置权限。在SQL Server配置管理器中查看启动账号。
![](https://image.cha138.com/20230304/24b668a1799d49699a65ff86e7338048.jpg)
![](https://image.cha138.com/20230304/a403c754146f46db96892855e85fd3ab.jpg)
在SQL Server配置管理器中,选择证书并重启SQL Server服务。注意:SQL Server 配置管理器中只能显示与服务器FQDN一致的证书,所以显示不出为SQL Server故障转移群集虚拟服务器名称创建的证书。需要通过修改注册表的方式配置,具体步骤见“SQL Server故障转移群集下配置证书”。
![](https://image.cha138.com/20230304/76ab4f51013a4170ae3491ecb4625dac.jpg)
通过ERROR_LOG可以看到SQL Server使用的证书。
![](https://image.cha138.com/20230304/26b633522a244108a66befeca10d7299.jpg)
SQL Server故障转移群集下配置证书
首先按照上面的步骤在所有节点导入证书,然后复制出证书的指纹。
![](https://image.cha138.com/20230304/324a36912e0e44df9d9424b7cdc0a562.jpg)
在所有的节点中打开注册表,找到HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft \\Microsoft SQL Server\\MSSQL.1\\MSSQLServer\\SuperSocketNetLib\\Certificate项(注意替换成实际的版本和实例名),填写复制的指纹数据,在填写时去掉数据中的空格。
![](https://image.cha138.com/20230304/0cf04fcc55d34f7d98665140b231b3a4.jpg)
最后,依次切换每个节点,验证SQL Server服务能否正常启动,并验证前端应用是否能正常连接。
北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。
以上是关于为SQL Server配置连接加密的主要内容,如果未能解决你的问题,请参考以下文章