自签名 SSL 证书是一种虚假的安全感吗?

And*_*dre 30 networking security ssl ssl-certificate x509

自签名 SSL 证书是一种虚假的安全感吗?

如果您被窃听,用户将像往常一样简单地接受证书。

Ham*_*sLi 25

有趣的问题,这取决于我认为的用途。就会话加密而言,您仍然受到保护,但除非您将 CA 根证书分发给用户/客户端,否则您无法判断它是否是提供给您的正确 SSL 证书。对于内部测试/开发项目,这会很好用,您生成一个根 CA 证书,您使用该证书分发给您的用户(可以通过 Windows 中的组策略和 Linux/BSD 中的 openssl 命令行完成),然后使用该根证书签署您的 CSR。用户不会看到警告或任何内容,并且您知道证书是由您的内部 CA 签署的。

对于您无法保证这一点的外部站点,如果您通过连接发送密码或其他敏感信息,我仍然会说自签名证书总比没有 SSL 好。

然而,从好的方面来说,有很多非常便宜的“商业”证书发行商,GoDaddy就是其中之一。每年大约 40 欧元即可获得证书。GoDaddy 甚至向开源项目网站提供免费证书。

  • @Piskvor,实际上这是浏览器的错。首先,浏览器通常不提供“永久接受”以前未知的自签名证书的方式,因此用户不会在每次登录时危及自己。其次,浏览器不鼓励使用旧的纯 HTTP,这也会造成虚假的安全感。所以,无论是在安全性还是用户意识方面,HTTP 总是比 HTTPS 差(至少他们得到了警告!)。 (7认同)
  • +1 除了“自签名证书总比没有 SSL 好” - **如果**您验证它是您的证书,而不是 MITM 提供的证书。老实说,普通用户最后一次这样做是什么时候?(我怀疑答案会涉及蓝月亮和飞猪)换句话说,使用自签名 SSL 证书而没有将 CA 证书分发给用户,您会使用户对他们收到的可怕警报不敏感 - 他们会学习点击这个,因为“好吧,他们告诉我忽略 mysite.example.com 上的警告,所以我可以在任何地方忽略它;看,一个锁图标!” 瞧,虚假的安全感! (4认同)

Mad*_*ter 12

我将不同意,一次是出于狭隘的技术理由,一次是出于一般理由。

狭隘的技术基础是 OP 询问自签名证书,而其他几个答案是指由私有 CA 签名的证书,这是一个略有不同的问题。但并没有太大的不同,所以这实际上只是一个顺便说一下。

主要的反对意见是,我认为只要商业签名的证书不仅仅是微不足道的开支——而且每年 40 美元对于这个星球上的很多人来说并不是微不足道的开支——自签名证书就可以发挥重要作用在互联网安全方面,只要他们的局限性得到认可

自签名证书就像我known_hosts文件中的 ssh 密钥。没有独立验证,它无法向我保证我正在与我相信的系统交谈;但它可以向我保证,我现在正在与之交谈的系统与我上次认为我正在与之交谈时与之交谈的系统相同。我们一直在缓存 ssh 密钥,而且我从未遇到过独立验证其known_hosts文件中超过一小部分公钥的系统管理员。

自签名证书(以及,就此而言,由通常无效的 CA 签名的证书)比根本没有 SSL 好得多,只要人们意识到除非他们验证它们,否则他们只会保护与自己,服务器的通信在 DNS 记录的另一端,以及当前在线的任何中间人。如果他们独立验证证书,则身份验证和加密至少与由公认的 CA 签署的证书提供的一样强。

此外,那些希望目前使用由公认的CA签署的一个和唯一的互联网安全的灵丹妙药证书可能需要认真考虑如下问题的标准Mozilla的束列入中国政府签署CA的,并且在Comodo 签署的欺诈性 SSL 证书

  • 您的用户是否能够对其当前 DNS 服务器路径的完整性(包括缓存中毒的可能性)以及他们所访问的设备的可信度进行有根据的评估?我不知道 DNS 是什么,更不用说能够就他们与另一个状态的服务器的连接做出有根据的安全决策,通过 MPLS 连接到另一个站点,该站点通过客户端 VPN 连接到用户,他们正在通过未加密的咖啡店wifi。避免给他们这种责任。 (2认同)
  • @Shane Madden:一个可能的领域是管理 Web 前端 - 例如 phpMyAdmin(或者,在较小程度上,通过 HTTPS 的 SVN)。通常用户数量有限,*他们包含一些重要的线索*。我不希望我的曾祖父对 SSL 证书警告做出正面或反面,但我绝对期望系统管理员同事这样做,特别是如果它是在他控制下的服务器。花园品种用户也不知道@MadHatter 正在引用的`known_hosts`。 (2认同)

Pis*_*ing 8

对于外部站点,用户没有安装您的 CA 证书(这是最常见的情况),是的,自签名证书给人一种虚假的安全感,因此它比无用更糟糕:

  • 首先,如果没有预装 CA 证书,用户如何验证证书确实来自您,而不是来自攻击者?当然,通过匹配证书字段(CN、指纹等) - 但针对什么?所以,现在你需要一个侧通道验证证书-并且在少数情况下,我看到,在支撑线运营商(谁应该担任核查边信道)不知道什么应该的意思; 此外,操作这样的侧信道比获得可信的 CA 签名证书要贵几个数量级,所以用户必须盲目地信任你。

  • 其次,用户收到的可怕警报之所以可怕是有原因的:由于用户无法/不会验证所提供的证书,他们可能正在安全地将数据传输到 Elbonian Haxx0r D00dz。

  • 第三,也是最糟糕的是,你让用户脱敏:“好吧,他们告诉我应该忽略https://mysite.example.com/上的警告,铁砧没有掉在我头上,我的金鱼也没有死;太棒了,这意味着它只是另一个没有任何实际意义的警告框,所以每当我遇到它时我都可以忽略这个框——无论如何我都会得到那个漂亮的锁图标,这很重要。”

换句话说,保护级别与普通HTTP相当(在线嗅探除外:虽然数据在传输过程中被加密,但没有端点验证是一个相当贫乏的特性),但保护的感觉高得不合理. 坏车类比:“我有 ABS,所以我现在可以在恶劣的条件下更安全地驾驶”——除了 ABS 只存在于汽车的销售手册中,实际上并没有出现在汽车中。

推荐阅读:OWASP SSL 最佳实践

TL;DR:通过在面向公众的网站上使用自签名证书,您正在使网络变得更糟,一次一个无知的用户。

  • @downvoter:如果您指出*哪里*我的答案实际上不正确(“不正确”而不是“不舒服、不方便且难以实施”),我将不胜感激。安全很难,而且“啦啦啦我听不见”并不能解决问题。 (2认同)
  • 虽然我没有否决您的答案,但向下箭头上的工具提示文本表明,除了答案没有用之外,没有其他任何理由进行否决。我认为错误的安全感钟摆也可以向另一个方向摆动。最近的 comodo RA 漏洞证明,“恶棍”获得完全合法的证书也不是那么困难。 (2认同)

dr *_*bob 8

要看。如果你认为它让你更安全,那么当你选择用你错误的安全感做更冒险的事情时,它会增加你的风险。如果你认为它在功能上等同于 HTTP,那么我会说你稍微更安全。

如果没有 SSL/HTTPS,任何在您的网络(或任何登录的本地网络)上使用 Wireshark 的人都可以轻松监听并捕获以纯文本形式发送的用户名/密码。

使用自签名 SSL,他们不能简单地监听,但现在必须伪造您的站点,可能会更改 DNS 以进行中间人 (MITM) 攻击。这仍然是一个威胁,但对他们来说实现起来要困难得多。

使用自签名 SSL 的另一个问题是,许多浏览器将自签名证书视为主要的安全威胁,并在进入(例如,chrome)之前用一个巨大的红页警告您。 http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html 这可能会给您带来很大的不便。

所以底线是:如果你运行的东西不需要特别安全(例如,没有信用卡数据,没有社会保障#s)并且买不起适当的证书,自签名证书可能会有意义(也就是说防止其他网络用户轻易嗅探他们的登录信息)。