当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

作者:精品下载站 日期:2024-12-14 23:29:07 浏览:17 分类:玩电脑

在 MS SQL Server 中配置 SSL 连接加密


如果您使用不受信任/公共网络将客户端/应用程序连接到 Microsoft SQL Server 数据库,建议使用流量加密。让我们看看如何为 Microsoft SQL Server 的客户端连接配置和启用强制 SSL/TLS 流量加密。

在 MS SQL 2016 及更高版本中,使用 TLS 代替 SSL。

要为 MS SQL Server 连接启用加密,您的服务器上需要有 TLS/SSL 证书。它可能是商业证书、CA 颁发的证书或自签名证书。 TLS 证书必须满足以下要求:

  • 增强的密钥用法 —

    Server Authentication 1.3.6.1.5.5.7.3.1

    ;

  • 有效期限;

  • 该证书必须位于用户 (

    certmgr.msc

    )或计算机(

    certlm.msc

    ) 证书存储;

  • 证书的主题名称中必须包含运行 MSSQL 的服务器名称;

  • 客户端必须信任该证书。

您可以使用PowerShell创建自签名证书(建议仅在测试环境中使用自签名证书):

New-SelfSignedCertificate -DnsName srvdb01.a-d.site -CertStoreLocation cert:\LocalMachine\My

如果您不仅要通过主机名还要通过其他名称访问 MSSQL 实例(例如,如果具有 RDS 连接代理数据库的始终在线高可用性组侦听器位于服务器上),请将所有可用名称添加到主题备用名称中。要颁发具有多个 SAN 的自签名证书,有效期为三年:

$curdate = Get-Date
$add3year = $curdate.AddYears(3)
$newcert=New-SelfSignedCertificate -DnsName srvdb01, srvdb01.a-d.loc,SQLRDDBCL.a-d.site -CertStoreLocation cert:\LocalMachine\My -notafter $add3year

将证书导入到受信任证书列表中:

$certFile = Export-Certificate -Cert $newcert -FilePath C:\certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName

[玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

如果您使用的是来自 CA 或外部 CA 的证书,请将其导入计算机证书存储(或用户证书存储,如果 MS SQL Server 在用户或 gMSA 托管帐户下运行)。如果 SQL Server 服务在没有本地管理员权限的帐户下运行,请授予其读取证书的权限。

然后将您的证书绑定到已安装的 SQL Server 实例:

  1. 运行SQL Server配置管理器,进入SQL Server网络配置,打开Protocols for MSSQLSERVER;属性

  2. 启用强制加密

    [玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

  3. 进入证书选项卡,在下拉列表中选择您导入到用户或计算机证书存储中的证书;

    [玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

  4. 重新启动 MS SQL 以应用更改。

要强制客户端始终使用与 MSSQL 服务器的加密连接:

  • 在客户端上打开服务器配置管理器 -> SQL Native Client 配置-> 属性 -> 启用强制协议加密。

    [玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

  • 您还可以使用以下连接字符串,使客户端使用 SSL/TLS 连接到 MSSQL 服务器:

    Data Source=srvdb01.a-d.site;Integrated Security=False;User ID=test;Password=[Password];Encrypt=True

客户端必须信任用于加密流量的证书。否则连接时会出现如下错误:

Cannot connect to SRVDB01.
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.) (Microsoft SQL Server, Error: -2146893019).

您可以使用 GPO 将证书添加到域计算机上的受信任根列表。

要使 SQL Server Management Studio (SSMS) 始终使用加密连接到 SQL Server 数据库,请打开连接窗口(连接到服务器)-> 选项 -> 启用加密连接选项。

[玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

如果 ”

The target principal name is incorrect

出现错误时,请确保您使用的是主题名称或证书 SAN 中指定的 SQL Server 名称。

[玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

您可以使用 SqlServer PowerShell 模块连接到 SQL Server,并确保您的 SQL Server 是否支持连接加密:

Invoke-Sqlcmd -ServerInstance "srvdb01" -Query "SELECT DISTINCT encrypt_option FROM sys.dm_exec_connections WHERE session_id = @@SPID"

如果您的 SQL Server 实例未在默认端口上运行,则按如下方式指定 t:

-ServerInstance "srvdb01,23223"

[玩转系统] 在 MS SQL Server 中配置 SSL 连接加密

在我们的示例中,SQL Server 支持加密连接(

encrypt_option=TRUE

)。

Azure SQL 数据库仅支持加密连接。即使未选中 SSMS 中的加密连接选项,与 Azure SQL 的连接也将被加密(请参阅 Azure SQL 中的数据库安全性一文)。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯