自签名 SSL 证书安全吗?

自签名 SSL 证书安全吗?

我希望在登录网络邮箱时有一个安全的连接,phpMyAdmin, ETC。

因此,我使用 OpenSSL 签署了自己的 SSL 证书,并告诉 Apache 监听端口 443。

这真的安全吗?我的所有密码真的都通过安全层发送吗?如果我从威瑞信还是自己签署?最终,所有数据都会在我的服务器上。那么,这有什么大区别呢?

答案1

这完全关乎信任。如果您从 Verisign 获得签名证书,则您向随机客户证明您的证书是可信的。如果您自行签署证书,则未在计算机上安装证书的人无法确保他们没有受到攻击中间人攻击

如果您的网络服务器仅供您使用,则您不需要真正的 CA(例如 verisign)来签署您的证书。只需在您要使用的机器上安装证书即可。

编辑:因此回答您的问题:是的,所有内容都经过加密,如果您知道提供给 Web 浏览器的证书实际上是您设置 Web 服务器的证书,那么您可以确保没有人可以读取您的敏感数据。

答案2

这一切都关乎信任。

假设你访问了一个提供证书的热门网站。该网站说“这就是我,你可以相信我,因为我有这封由某人签名的介绍信相信。”

在这种情况下,“您信任的人”是证书颁发机构之一,他们(希望)已经为您完成了确认证书颁发者身份的工作。

您真正信任的是浏览器作者对证书颁发机构对颁发证书的人的身份的信任。您和颁发者之间通常还有多个颁发机构,因此有“信任链”一词。[1]

当您签署自己的证书时,不存在信任链。您的网站会将自己的证书返回给您。如果您在浏览器中安装自己的证书,作为信任,则将其视为一种授权,与预安装的授权相同。然后,​​您将拥有一个只有一个链接的信任链。

如果您随后访问自己的网站并且浏览器警告您它正在​​提供不受信任的证书,那么您应该有理由担心,因为与任何其他提供不受信任证书的网站一样,您不能确定您正在与真正的网站进行通信。

请注意,我还没有提到加密。证书是关于验证身份与您通信的一方的身份。通过受信任的证书,您可以合理地确保您的商店或银行是真实的。一旦您确定了他们的身份,下一步就是确保你们之间的通信安全。证书中恰好也包含促进这种安全性所需的密钥。假设您已正确设置 SSL,那么这种通信与您与商店或银行的通信一样安全,您的密码也同样受到保护。[2]

[1] 这绝不是一个完美的体系。自由市场和低利润、大批量的业务不可避免地会导致成本削减:http://www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2] 至少,受到保护足够的让某人闯入你的家并从你身上榨取秘密比试图破解它们要便宜得多:http://xkcd.com/538/

答案3

实际上,自签名证书是安全的,但不是在我们现在使用的模型下。


在广泛使用的 CA(证书颁发机构)模型下每个人目前使用,由受信任的 CA 签名的证书的目的是提供身份验证。

当我们获得证书时,我们真正看到的只是从墙上的插孔输入的 1 和 0;我们不知道这些 1 和 0 来自哪里。但是,由于证书是由 CA 颁发证书 —— 除了该 CA,世界上没有其他人可以做到这一点 —— 并且因为我们相信 CA 能够验证证书所有者的身份,所以我们相信证书来自其声称的那个人。

当然,如果CA 已遭入侵或者无法正确验证所有者,一切赌注都无效。


然而,还有另一种模型,即自签名证书提供真实性。这被称为公证模式

本质上,我们不是信任单个 CA,而是将信任分配给任意数量的公证人。这些公证员在互联网上搜索证书,并保存他们见过的所有证书的缓存。当您第一次访问某个网站并获取证书时,您会向全球分布的许多公证员询问他们看到的最后一个证书是什么。如果他们不同意您看到的内容,您可能会成为中间人攻击的一部分。

在这种模型下,只要我们假设服务器在任何公证人查看其证书之前没有立即受到损害,自签名证书就是非常安全的。


公证模式仍处于起步阶段,其是否能取代 CA 模式尚不确定。(实际上,不必如此 - 它们可以串联使用). 迄今为止最有前途的项目是Convergence.io,它有一个适用于 Firefox 的插件。

答案4

这并非完全与信任有关....

SSL 证书有两个用途 - 1) 您正在连接的 Web 服务器是否是您想要连接的服务器;2) 加密通信。

你可以不使用 #1 而使用 #2,这就是你已完成的。剩下的就是验证你连接的盒子是否是你想要的。

如果是我的服务器,我使用我自己的自签名证书没有问题 - 虽然存在一些风险,即有人可能会欺骗我,让我连接到他们的服务器而不是我的服务器。由于没有人关心我和我的服务器,而且我在这里没有什么价值,所以我认为这样做没有太大的风险。

另一方面,如果不是我的服务器而是你的服务器,那么我就会担心。

相关内容