首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server加密- SelfSign证书工作-为什么?

Server加密- SelfSign证书工作-为什么?
EN

Database Administration用户
提问于 2017-09-09 17:58:17
回答 1查看 9.1K关注 0票数 5

我意识到这是一种奇怪的行为,我想知道在使用SQL Server生成的自签名证书时,它是否应该是这样工作的。

  1. 客户端(Management )具有"encrypt connection“选项集,客户端将在Server端验证自签名证书,并由于自签名证书不受信任而失败
  2. 客户端(Management )没有“加密连接”选项集,但在Server端使用Server配置管理器打开“强制加密”。客户端将不验证自签名证书,并将与加密的连接成功连接.

问题

  1. 为什么在服务器端强制加密时,客户端不尝试验证Server自签名证书?为什么在客户端强制加密时,客户端只验证自签名证书?
  2. 如果在客户端没有为服务器端加密进行cert身份验证,那么使用CA签名的证书有什么意义?

更准确地说:为什么客户机(Mgmt )在只有服务器端加密打开时不尝试验证/验证证书(无论是自签名/CA签名)?当客户端加密(“加密连接”)打开时,客户端为什么只验证/验证服务器提供的证书?

我添加了一个签名证书(由内部CA签名),用于服务器端加密。这需要在客户端计算机上安装内部CA证书(安装到受信任的根CA中),但我没有这样做。然而,当服务器端加密打开时,客户端(mgmt )仍然成功地连接.

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-09-09 23:22:12

无论客户端加密规范是什么,在服务器端打开Force选项(SSCM->MSSQLSERVER网络配置->MSSQLSERVER->Properties->Flags-->Force Encryption)时,流量都将被加密。如果没有从受信任的CA安装证书,Server将使用自签名证书。

客户端无法验证自签名证书,因为不存在可信的第三方。因此,需要加密(Encrypt=true)的客户端还必须显式地指定证书是可信的,以便连接使用自签名证书成功。TrustServerCertificate=true基本上是说“是的,我理解风险,但无论如何都要连接”,并且证书链没有被验证。

CA颁发的证书将可信的第三方添加到混合中,这样证书链就可以由客户端使用TrustServerCertificate=false进行验证。虽然您可以连接TrustServerCertificate=true和CA颁发的证书(我认为这是您的第二个问题),但这并不安全,因为客户端可能不自觉地使用自签名证书。

当只打开ServerSide加密时,客户端(Mgmt )为什么不尝试验证/验证证书(是否是自签名/CA签名)?当>客户端加密(“加密连接”)打开时,客户端为什么只验证/验证服务器提供的证书?

服务器可以强制对所有客户端进行加密通信,但客户端始终有验证证书的责任。假设默认连接设置是SSMS和其他客户端中的Encrypt=false。这是说“我不需要加密的通信量,所以不管服务器设置或证书如何,都要连接。”ForceEncryption=true服务器设置通过加密通信量来增强此默认设置,而不管客户端请求的加密级别如何。此行为与ADO.NET提供程序的连接字符串语法文档中的摘录一致:

应用程序设置永远不会降低Server客户端配置管理器设置的安全性,但可能会增强它。

由于客户端最初没有请求加密,所以没有执行证书验证,但是仍然通过使用SQL Server上提供的任何证书加密通信来增强安全性。客户端可以指定Encrypt=trueTrustServerCertificate=false来进一步增强安全性。这不仅验证了可信证书的存在,而且还加密了通信,即使服务器上的ForceEncryption=false也是如此。

客户端必须选择加入证书验证。这样做是为了使您能够从服务器强制加密,而无需获得可信证书、在客户端上安装证书或更改客户端连接字符串。请参阅产品文档中的使用加密而不进行验证

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/185511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档