【问题标题】:Why do I need to have installed certificates for https connections?为什么我需要为 https 连接安装证书?
【发布时间】:2018-05-30 12:18:14
【问题描述】:

关于与 https 资源的通信,例如安全的 web 服务,我从https://wiki.genexus.com/commwiki/servlet/wiki?4443,Consuming+web+services+under+https+in+Java 中读到,为了建立来自 Java 的连接,“我们必须安装我们寻求通信的服务器证书。这样证书包含用于加密发送信息的公钥,仅由服务器使用其私钥解码(在此处阅读更多)。因此,在使用 https 下的服务时,我们将需要服务器证书才能建立我们的沟通”

疑问:

  1. 据我了解,当您打开与 https 资源的连接时,例如,从浏览器中,服务器会发送证书,但您不需要事先安装它,或者我是否需要始终在我的机器(浏览器...)?为什么我需要它?

谢谢

【问题讨论】:

  • 您实际上不需要服务器证书。 Anonymous Diffie Hellman cipher suites 不需要证书是 SSL/TLS 标准的一部分。但是 AFAIK 没有配置为使用它们的开箱即用 SSL/TLS 实现,因为它们显然不是很安全,容易受到 MITM 攻击。

标签: web-services ssl certificate


【解决方案1】:

您通常有一个您信任的 CA 列表,然后您会自动信任由这些证书颁发机构之一颁发的服务器提供的任何证书。

对于更高的安全设置,您可以改为在带外获取另一个端点证书并验证它是否匹配。但是,您存在管理问题,因为证书确实会过期(CA 证书也会过期,但更常见的是在 10-20 年的时间跨度内,而不是最多有效期为 1 年的单个证书,对于 Let's Encrypt 甚至只有 3 个月),并且您需要通过一些值得信赖的方式抓住他们。

请注意,DANE 等较新的技术允许提供商在 DNS 中插入其使用的证书(或其指纹)或 CA 的证书,以便向客户端发出信号以确保仅使用与它是用那些加密材料完成的(这与当前 Web PKI 的流程之一作斗争,因为我们默认信任太多的 CA,并且它们中的任何一个都可以为任何资源提供证书,因此整个安全性只是信任库中所有 CA 中最弱的 CA 之一,无论您实际使用的是哪个)。

DNS CAA 记录早于 DANE,还可用于指示给定资源“允许”哪些证书。

TLS 提供多种好处,其中包括身份验证和完整性。它们是正交的,但与直觉相反,身份验证比完整性更重要(应该放在首位)(没有必要将受保护的内容发送给您未验证的一方)。 TLS 中的身份验证通常(这不是唯一的方法)使用 X.509 证书(通常两次错误地命名为“SSL 证书”),或者在一侧,或者在两侧(它是在这方面是对称的,每个端点都可以根据需要对另一个端点进行身份验证)。

【讨论】:

  • 谢谢,但据我了解,我信任的 CA 列表是 CA 证书列表?与服务器证书不同吗?我认为他们这样做是因为服务器证书是 CA 证书,但适用于特定公司,而 CA 证书不适用于任何特定公司,仅适用于 CA 公司本身
  • 从技术上讲,所有证书都是相同的:它们带有一个公钥部分、它所涵盖的名称、签署它的名称以及一些元数据,例如日期。服务器证书由另一个证书(CA 或中间证书)签名。您有一个链到一个“根”证书,来自一个具有自签名属性的 CA,显示链的末端。您的信任库中有一个此类“根”证书的列表(由操作系统维护,或特定于每个应用程序,如浏览器),并且软件绝对信任它们(又名:信任它们签署的任何证书)
  • 证书有多种“类型”:DV、OV、EV。域验证的证书通常是证书,其中的名称只是一个主机名,即您的服务器的名称。 Organization Validated 是名称为组织名称的证书,例如“Acme, Inc.”。无论您连接到哪个特定服务器。扩展验证是对 OV 的改进,对发行进行更严格的检查。像 Let's Encrypt 这样的 CA 只提供 DV 证书,因为这些证书只能在自动检查后颁发,而这对于 OV/EV 来说是不可能的。
猜你喜欢
  • 2015-07-06
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2012-07-09
  • 2017-02-24
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多