带有自签名 SSL 证书的 http 和 https 有什么区别?

信息安全 tls 网页浏览器 证书颁发机构
2021-08-29 13:44:27

我的一位同事告诉我,他不明白为什么在访问带有自签名证书的 HTTPS 网站时会出现警告说安全性可能会受到损害,但在访问“常规”HTTP 网站时却没有警告,尽管安全性也可能受到损害。

我没有想到反对的论点(我理解自签名证书和 CA 颁发的证书之间的区别)。

那么,在访问带有自签名或过期证书的 HTTPS 网站时,您在访问 HTTP 网站时没有的安全风险是什么?

我想补充一下自签名证书的浏览器警告消息背后的原因是什么,但 HTTP 没有,但我已经想到了几个,“不打扰 90% 的网络用户”就是其中之一。

笔记

我知道一个非常相似的问题,但它没有回答我的特定问题。

更新

谷歌意识到了这个悖论,他们很快就会将所有 HTTP-not-S 连接标记为不安全:https ://security.googleblog.com/2016/09/moving-towards-more-secure-web.html

4个回答

警告的目的是通过使用 HTTPS,期望获得适当的安全性,但自签名或过期证书存在用户需要注意的漏洞。

“风险”是人们认为它们得到了适当的保护,但它们并不完全安全,这与 HTTP 相反,人们知道根本没有加密。

HTTP 不会有警告,因为没有安全性(即加密)可以妥协。

安全差异

首先,让我们谈谈 SSL(现在顺便称为 TLS),它在 HTTP S的末尾添加了“S” ,负责“保护通信”。回答这个问题的线索确实是要充分理解我们所说的“保护通信”是什么意思。

SSL,无论是正在使用的自签名证书还是由受信任的 CA 签名的证书,都将确保您与远程主机之间的通信保持机密,并且没有人可以篡改任何交换的数据。

因此,警告与此无关。

但是,您如何确定响应您请求的远程主机确实是您所期望的呢?对于公共网站,您无法直接通过自己的方式验证证书,这是不可能的。这是外部受信任的 CA:通过信任一个 CA,您假设由他签名的所有证书仅用于合法目的,以保护证书中明确提到的服务器的流量。

这就是警告的全部内容:您的浏览器警告您,虽然通信本身是安全的,但它没有自动验证证书的方式,因此依赖于您接受或拒绝它。

如果自签名证书与您的其中一台服务器相关联,您应该能够继续进行此手动身份验证:您应该能够检查证书指纹,或者至少您应该知道证书最近是否已更改.

完成此手动身份验证后,您的浏览器会为您提供“记住”此证书的可能性:这意味着浏览器会将这个自签名证书与 URL 主机相关联,并且以后不会提供任何警告,因为现在,浏览器具有自动验证证书的方法。

但是,一旦服务器上的自签名证书发生更改,浏览器将再次显示警告,最终用户将再次确定此证书更改是否正常以及是否提供了新证书经服务器确实是正品。

用户体验差异

到目前为止,我的回答并未涵盖您问题的浏览器用户界面方面。

我发现浏览器通知用户当前安全性的默认方式大多是无效的。用户只是不关心挂锁也不会注意到 SSL 安全性何时丢失即使是关心的用户也无法访问正确的信息(没有什么可以阻止显示扩展验证证书的网站将其网站配置为使用劣质和弱加密系统或依赖安全性较低的第三方内容:默认浏览器的界面仍然是对此感到高兴并显示“一流的安全性”绿色条)。

希望根据所使用的浏览器,可能会有一些插件试图纠正这种情况。在 Firefox 上,您有SSLeuth,默认情况下会在左侧或 URL 栏添加一个新的通知区域(如果有挂锁,则在挂锁旁边)

这个新的通知区域具有以下属性:

  • 背景颜色范围从红色(无安全性:HTTP)到橙色(安全设置差)到蓝色和绿色(根据当前最佳实践的良好和最佳安全性)。
  • 一个选项允许将此颜色扩展到整个 URL 栏,因此 HTTP 网站现在将显示一个全红色的 URL 栏,
  • 最后会显示一个分数(介于 0 和 10 之间),以显示对当前 SSL/TLS 安全级别的估计。它考虑了几个标准,其中包括证书类型(自签名、CA 签名、扩展验证证书)、使用的加密配置、第三方内容安全等。单击通知区域提供所有分数详细信息,主要是当结果不是预期的结果时很有用(又名“为什么我的银行网站被授予橙色 URL 栏? ”)。

如果没有针对自签名或过期证书、不适当的密码套件选择和其他不良 HTTPS 配置等内容的警告,则向用户展示网站的安全状态会变成二进制 - 要么您在网站上有 HTTPS,要么您没有. 这将隐藏许多细微差别,这些细微差别会显着影响“HTTPS”中的“S”真正保护您的程度。

在正确的 HTTPS 实施中,站点的证书由客户端系统信任的第三方签名。这向客户保证,内容是从他们期望的系统交付的,中间没有任何人。

自签名证书的问题是任何人都可以制作。因此,该证书也可以从充当中间人的系统生成,该系统正在拦截甚至可能操纵您与受信任系统之间来回传输的数据。如果受信任的系统通常使用自签名证书,并且您没有亲自验证该证书带外或在先前已知的可信任连接期间,您将永远不会知道其中的区别。

这与常规 HTTP 有何不同?从表面上看,它似乎不是——在任何一种情况下,MitM 都可以很容易地查看和篡改连接,而你会忘记。但是,使用带有自签名证书的 HTTPS 可以为您提供 HTTP 所不能提供的东西:确保您的数据在传输过程中仍处于加密状态,尽管介于两者之间。根据环境(例如:人口密集的公共 Wi-Fi),这可能会大大减少可以访问您数据的受众,即使实际上可能有中间人在玩。

您可能想查看我对另一个相关问题的回答,以获取更多相关信息。Troy Hunt 的文章“SSL 与加密无关”可能会引起您的兴趣,但可能对您在此处的辩论没有多大帮助。

这些答案很棒。但我经常不得不给出一个没有所有行话的简化答案。

HTTP - 它没有加密,通过线路发送的数据可以很容易地读取。

HTTPS - 由受信任方加密和验证,数据由正确的来源处理。

HTTPS(自签名)- 它是加密的,但受信任方没有验证它是由正确的来源处理的。

这就是为什么自签名证书会受到非常重要的通知。即使这并不意味着证书不安全,浏览器也无法确认证书在使用/传输您的数据时是安全的。如果没有此重要通知,诈骗者/黑客可能会用他们自己的证书替换证书,而您将一事无成。