前言
很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理。
连接加密
连接加密是SQL Server的TDS协议和TLS协议结合完成的,是在客户端驱动程序(ADO.NET、JDBC、OLEDB等)和SQL Server服务端实现的,对于上层的应用程序是透明的。
服务器端配置
打开SQL Server配置管理器,在SQL Server网络配置节点下,选择要启用加密连接的实例,右键,选择“属性”,在弹出的窗口中配置强行加密。确定后,重启SQL Server服务。
通过视图sys.dm_exec_connections的encrypt_option属性可以看到所有的连接都已经加密了。
客户端配置
在服务器端启动强制加密是最简单的方法,如果前端应用程序使用非常老的数据库驱动程序,不支持TLS协议,无法正常连接数据库,例如低版本的PB、DELPHI等。另外,基于网络抓包分析的审计软件也无法工作。在这种情况下,可以在客户端进行有选择性地配置。
通过在数据库连接字符串中增加Encrypt和TrustServerCertificate两个关键词来实现。
ADO.NET
JDBC
SQL Server Management Studio
配置证书
大多数情况下,使用自签名证书就足够了。如果想使用CA机构颁发的第三方证书,可按照以下步骤配置。
运行mmc打开控制台,添加证书管理。
注意:导入证书的使用者属性必须与服务器的完全限定域名 (FQDN) 一致。如果是SQL Server故障转移群集,要和虚拟服务器的FQDN一致。
为SQL Server启动账号配置权限。在SQL Server配置管理器中查看启动账号。
在SQL Server配置管理器中,选择证书并重启SQL Server服务。注意:SQL Server 配置管理器中只能显示与服务器FQDN一致的证书,所以显示不出为SQL Server故障转移群集虚拟服务器名称创建的证书。需要通过修改注册表的方式配置,具体步骤见“SQL Server故障转移群集下配置证书”。
通过ERROR_LOG可以看到SQL Server使用的证书。