客户端如何检索 SQL Server 公共 SSL 证书?

out*_*tis 12 sql-server ssl

用户能否检索 SQL Server 实例的连接证书(类似于某人检索 HTTP 证书的方式)?如果是这样,如何?

语境

如果 SQL Server 客户端请求加密,则在允许加密连接之前必须验证服务器证书。开发服务器通常配置有自签名证书,在默认客户端设置下不会验证。

要使用自签名证书加密连接,请执行以下任一操作:

  • 证书必须添加到本地存储
  • 客户端必须设置 "TrustServerCertificate=true"
  • 客户端不得请求加密,服务器必须设置"ForceEncryption""yes"

后两个选项在每次建立连接时都会受到中间人攻击。第二,有些客户端不保存连接设置,因此必须为每个新连接重新设置。因此,最理想的解决方案是将证书添加到本地存储(最初需要做更多的工作,但之后是最简单和最安全的选择)。对于域中的用户,证书很容易分发,否则需要在每台计算机上手动安装证书。管理员可以通过直接发送或将其作为网络资源提供给每个用户来提供证书,但有时管理员可能因为其他原因太忙或无响应而无法提供证书。

在这种情况下,如果用户可以直接从 SQL 服务器获取证书将会很有用,就像可以使用浏览器或openssl s_client. 这在检索证书时仍然容易受到中间人攻击,但提供的窗口比每次有新连接时信任证书要窄得多。

Rem*_*anu 2

从技术上讲这是可能的,TDSTLS /SSL 都有记录。但你问错了问题。

随心所欲地在任何地方手动安装自签名证书是没有意义的,它不会给你带来任何好处。你只会在任何地方安装 MitM 的证书......

专注于部署正确配置的 PKI 基础设施。使用受信任的证书(即 Verisign 等),或者在网络中安装 PKI 信任并使用基础设施签名证书。

请参阅本系列:设计和实施 PKI

  • 我不同意——手动获取 SQL 服务器的证书有一个非常好的目的,那就是查看它。就我而言,我想查看它包含哪些域,并且没有简单的方法(据我所知)从服务器获取证书。所有主流浏览器都为您提供了这个简单实用的工具;如果它没有用,浏览器也不会拥有它。 (19认同)