首页 > 数据库 > 为SQL Server配置连接加密

为SQL Server配置连接加密

时间:2023-02-14 12:04:20浏览次数:37  
标签:加密 证书 配置 Server SQL 连接

前言

很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理。

1连接加密

首先,连接加密不是透明数据加密,很多人经常把两个概念混淆。连接加密是指客户端程序和SQL Server通信时的加密,保护数据在传输过程中的安全。

连接加密是SQL Server的TDS协议和TLS协议结合完成的,是在客户端驱动程序(ADO.NET、JDBC、OLEDB等)和SQL Server服务端实现的,对于上层的应用程序是透明的。

2服务器端配置

打开SQL Server配置管理器,在SQL Server网络配置节点下,选择要启用加密连接的实例,右键,选择“属性”,在弹出的窗口中配置强行加密。确定后,重启SQL Server服务。

 为SQL Server配置连接加密_sql server运维

通过视图sys.dm_exec_connections的encrypt_option属性可以看到所有的连接都已经加密了。

 为SQL Server配置连接加密_sql server集群_02

说明:如果是SQL Server故障转移群集或者AlwaysOn,每个节点都需要配置。

3客户端配置

在服务器端启动强制加密是最简单的方法,如果前端应用程序使用非常老的数据库驱动程序,不支持TLS协议,无法正常连接数据库,例如低版本的PB、DELPHI等。另外,基于网络抓包分析的审计软件也无法工作。在这种情况下,可以在客户端进行有选择性地配置。

通过在数据库连接字符串中增加Encrypt和TrustServerCertificate两个关键词来实现。

ADO.NET

 为SQL Server配置连接加密_sql server集群_03

JDBC

 为SQL Server配置连接加密_数据库安全_04

SQL Server Management Studio

 为SQL Server配置连接加密_sql server集群_05

老版本SQL Server Management Studio

 为SQL Server配置连接加密_数据库安全_06


4配置证书

无论是在服务端还是客户端配置连接加密,都需要使用证书。默认情况下,SQL Server会生成自签名证书,在ERROR_LOG中可以看到一条“已成功加载自行生成的证书以进行加密”的日志。

 为SQL Server配置连接加密_sql server运维_07

大多数情况下,使用自签名证书就足够了。如果想使用CA机构颁发的第三方证书,可按照以下步骤配置。

运行mmc打开控制台,添加证书管理。

 为SQL Server配置连接加密_数据库安全_08

 为SQL Server配置连接加密_sql server运维_09

 为SQL Server配置连接加密_sql server运维_10

在“个人”节点下按照向导导入证书。

 为SQL Server配置连接加密_数据库安全_11

 为SQL Server配置连接加密_数据库安全_12

 为SQL Server配置连接加密_sql server集群_13

 为SQL Server配置连接加密_数据库链接加密_14

 为SQL Server配置连接加密_数据库安全_15

 为SQL Server配置连接加密_sql server运维_16

注意:导入证书的使用者属性必须与服务器的完全限定域名 (FQDN) 一致。如果是SQL Server故障转移群集,要和虚拟服务器的FQDN一致。

 为SQL Server配置连接加密_sql server运维_17

为SQL Server启动账号配置权限。在SQL Server配置管理器中查看启动账号。

 为SQL Server配置连接加密_数据库安全_18

 为SQL Server配置连接加密_数据库链接加密_19

在SQL Server配置管理器中,选择证书并重启SQL Server服务。注意:SQL Server 配置管理器中只能显示与服务器FQDN一致的证书,所以显示不出为SQL Server故障转移群集虚拟服务器名称创建的证书。需要通过修改注册表的方式配置,具体步骤见“SQL Server故障转移群集下配置证书”。

 为SQL Server配置连接加密_sql server集群_20



通过ERROR_LOG可以看到SQL Server使用的证书。

 为SQL Server配置连接加密_数据库链接加密_21

5SQL Server故障转移群集下配置证书

首先按照上面的步骤在所有节点导入证书,然后复制出证书的指纹。​

 为SQL Server配置连接加密_数据库安全_22

在所有的节点中打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Certificate项(注意替换成实际的版本和实例名),填写复制的指纹数据,在填写时去掉数据中的空格。

 为SQL Server配置连接加密_数据库链接加密_23

最后,依次切换每个节点,验证SQL Server服务能否正常启动,并验证前端应用是否能正常连接。

​北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

 为SQL Server配置连接加密_sql server运维_24

标签:加密,证书,配置,Server,SQL,连接
From: https://blog.51cto.com/u_15934193/6056521

相关文章

  • 微信小程序使用Base64加密解密
    js文件:varbase64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode(str){//加密varoutput="";......
  • VMware 虚拟机安装 Ubuntu 20.04-server
    一、ubuntu镜像下载选择服务器版:https://cn.ubuntu.com/download/server/step1 二、安装步骤1、选择语言:选择语言为English 2、系统更新:选择不更新 3、设置键......
  • Navicat远程连接linux下mysql服务器1045错误解决办法在这儿
    1:首先通过xshell工具或者你熟悉的工具连接远程linux下的服务器mysql-uroot-p   然后输入密码 2.进行授权如果想root用户使用password从任何主机连接到mysql服务器......
  • mysql 变量声明及赋值的三种方式
    情景展示在mysql中,如何申明一个变量并进行使用?MySQL中主要有三种类型的变量:局部变量、系统变量及用户自定义变量。1.局部变量(无前缀)1.1声明变量作用域:BEGI......
  • MySQL 替换和截取指定位置字符串
    1.情景展示返回服务器的身份证号需要进行加密:只保留前4位和后3位,中间使用*代替,如何实现? 2.场景分析需要用到的函数有:IFNULL(),IF(),LENGTH(),REPLACE(),SUBSTR()......
  • Linux--Install vscode server
    1要做的工作1.1获取vscode的commitid1.2从https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable下载vscodeserver1.3将vscode......
  • 处理U8 结转损益凭证存在银行两清标志/分录 不能作废凭证SQL操作
    --处理U8结转损益凭证存在银行两清标志/分录 不能作废凭证SQL操作:---查询凭证号及会计期间select*fromGL_accvouch whereino_id=98 andiyperiod='202101'---更......
  • Mysql的日志系统
    MySQL整体来看,其实就有两块:一块是Server层,它主要做的是MySQL功能层面的事情;还有一块是引擎层,负责存储相关的具体事宜。如图:本次知识总结:最开始MySQL里并没有InnoDB引擎......
  • PGSQL 数据库用户管理示例
    前提:利用postgres用户登录,并用创建测试数据库createdatabasetest 1、新建用户new_user,并将密码设为1234567createusernew_userpassword'123456'2、授......
  • mysql 如何修改主键起始值?
    1.情景展示在实际开发中,往往会存在这种需求:将A表当中的数据导入B表,后面继续使用B表。由上一篇,我们了解到:B表如果是通过createtablebasselect*froma的方式,将会导致的......