自签名SSL证书是一种错误的安全感吗?


Answers:


25

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

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

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


这正是我们所做的。请注意,尽管带有便宜的证书。其中一些具有相当奇怪的根CA,但并非所有这些都在所有浏览器附带的根CA证书集合中。
wolfgangsz

4
+1除了“自签名证书总比没有SSL更好”- 如果您验证它是您的证书,而不是由MITM提供的证书,则为+1 。老实说,普通用户最后一次是什么时候?(我怀疑答案可能是蓝月亮和飞猪)换句话说,使用自签名SSL证书而没有将CA证书分发给用户,您使用户对他们收到的可怕警报不敏感-他们将学习单击此按钮,例如“他们告诉我忽略mysite.example.com上的警告,因此我可以在任何地方都忽略它;看,是一个锁定图标!” 瞧,虚假的安全感!
Piskvor 2011年

7
@Piskvor,实际上那是浏览器的错。首先,浏览器通常不提供“永久接受”以前未知的自签名证书的方式,以使用户不会在每次登录时危及自己。其次,浏览器不鼓励使用旧的普通HTTP,这也会产生错误的安全感。因此,在安全性和用户意识方面,HTTP总是比HTTPS差(至少他们得到警告!)。
Rotsor 2011年

1
@Rotsor:首先,Opera具有您描述的内置此功能,FF具有证书巡逻(至少会警告证书更改)。还要注意,并非SSL上的所有内容都是浏览器(IMAPS等)。第二,现有的过多HTTP仅如何定位浏览器的故障?(而且,没有,纯HTTPS的浏览器从未流行,正是因为要使用它们进行浏览的网络大大缩小了)。第三,如果只有用户可以阅读警告,并且不会盲目地单击“接受”以使其消失,那么 “他们得到警告”将很有用。“单击接受意味着理解”是开发人员的共同幻想。
Piskvor 2011年

1
@Piskvor,很高兴知道某些浏览器确实提供了该功能。至于HTTP,我不知道该怎么做(禁止HTTP显然不是一种选择),但是使用自签名SSL比不使用SSL拥有更多与安全相关的警告绝对是错误的,并且浏览器也是故障!
Rotsor 2011年

12

我将不同意,一次是在狭窄的技术基础上,一次是在一般基础上。

狭窄的技术基础是OP询问有关自签名证书的问题,而其他几个答案则是指由私有CA签名的证书,这是一个稍有不同的问题。但是差别不大,因此实际上只是顺便提一下。

主要的反对意见是,我认为只要商业签发的证书的费用不只是微不足道的费用-而且对于这个星球上的许多人来说,每年40美元对他们来说不是微不足道的费用-自签证书会发挥主要作用在互联网安全中,只要其局限性得到认可

自签名证书就像我known_hosts文件中的ssh密钥一样。没有独立的验证,就无法保证我正在与自己相信的系统进行交谈;但是它可以确保我现在正在使用的系统与我上次以为正在与之对话的系统相同。我们一直在缓存ssh密钥,而我还从未见过系统管理员独立验证过他known_hosts文件中的一小部分公共密钥。

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

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


遗憾的是,“受信任的CA”模型确实已被打破(并且已经存在了很多年)。不幸的是,它并没有消失(并且实际上没有更好的替代方法)。与往常一样,SSL和受信任的CA并不是神奇的安全小问题。用户需要积极维护安全性-在大多数情况下,这是一个相当疯狂的假设。
Piskvor 2011年

2
您的用户是否有能力对他们对当前DNS服务器的路径(包括缓存中毒的可能性)以及所击中的设备的完整性进行置信度评估(包括其可信度)?我不知道DNS是什么,更不用说能够做出有根据的安全性决定了它们与处于另一状态的服务器的连接,该服务是通过MPLS连接到另一个站点的,而MPLS是通过客户端VPN连接到用户的,通过未加密的咖啡店wifi开启。避免赋予他们这种责任。
Shane Madden

2
@Shane Madden:可以做到这一点的领域是管理Web前端-例如phpMyAdmin(或者在较小程度上是HTTPS上的SVN)。通常,用户数量有限,而且其中包含的线索相当多。我不希望我的曾祖父在SSL证书警告中大跌眼镜,但是我绝对希望其他sysadmin的用户这样做,尤其是如果它是受hir控制的服务器。园林用户也不了解known_hosts@MadHatter正在引用。
Piskvor 2011年

8

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

  • 首先,如果没有预先安装的CA证书,用户如何验证该证书确实来自您而不是来自攻击者?通过匹配证书字段(CN,指纹等),当然-但要反对什么呢?因此,现在您需要一个辅助渠道来验证证书-在少数情况下,我已经知道,支持热线运营商(应作为辅助渠道来进行验证)不知道是什么意思。同样,操作这种副信道比获得受信任的CA签名证书要贵几个数量级,因此用户必须盲目地信任您。

  • 其次,用户收到的可怕警报是令人恐惧的,这是有充分理由的:由于用户无法/不会验证所提供的证书,因此他们可能正在安全地将数据传输到Elbonian Haxx0r D00dz。

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

换句话说,保护级别与普通HTTP相当(在线嗅探除外:尽管数据在传输过程中进行了加密,但是如果没有端点验证,这是相当贫乏的功能),但是保护的感觉却不合理。 。糟糕的汽车类比:“我有ABS,因此我现在可以在恶劣的条件下更安全地驾驶”-除了ABS仅存在于汽车的销售手册中,而实际上并未出现在汽车中。

建议阅读:OWASP SSL最佳实践

TL; DR:通过在面向公众的站点上使用自签名证书,您使Internet变得更糟,一次只有一个笨拙的用户。


2
@downvoter:如果您指出我会很感激这里我的回答是事实不正确(“不正确”,而不是“不舒服,不方便,而且一个懒得贯彻”)。安全性很强,因此“无法听到您的声音”无法解决任何问题。
Piskvor 2011年

2
尽管我没有拒绝投票,但向下箭头上的工具提示文字表明,除了答案无用之外,其他任何原因都不会拒绝投票。我认为错误的安全摆感也可以朝另一个方向摇摆。最近的comodo RA违规证明,“恶棍”获得完全合法的证书也不是那么困难。
mahnsc 2011年

@mahnsc:谢谢您的提醒;我知道:-)“自签名SSL证书是对安全的一种错误感吗?” “是的,由于以下原因...”听起来很有用,不是吗?因此,我很好奇为什么情况并非如此:我可以从相反的观点中学到一些东西;从否决票开始,不是很多。
Piskvor 2011年

1
@mahnsc:关于受感染的CA的好处。我并不是说根CA列表是一成不变的,而且不可破解-完美的安全性不存在;但是与在网络网关上设置捕获SSL代理相比,要破坏它要花费更多的精力。
Piskvor 2011年

1
@mahnsc:我的意思是,设置SSL代理并希望用户单击警告要比设置SSL代理并希望伪造的证书请求通过CA验证过程容易。正如我们所看到的,这两种方法都是可行的,但是前者更容易实现(并且以后很难检测,因为浏览器用户通常不保留审核记录)。
Piskvor 2011年

8

要看。如果您认为这样做可以提高安全性,那么当您选择以错误的安全感来做更冒险的事情时,就会增加风险。如果您在功能上等同于HTTP,那么我会说您稍微安全些。

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

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

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

因此,最重要的是:如果您运行的东西不需要特别安全(例如,没有信用卡数据,没有社会保障号码)并且负担不起适当的证书,那么自签名证书可能会有所帮助(也就是说,防止其他网络用户轻易嗅探其登录信息)。


0

这取决于您对“安全性”的含义,以及程度。

例如,您的浏览器默认带有一组接受的CA。这意味着,此CA颁发的任何证书都将被您的浏览器接受(直到它与dns名称匹配)。现在,想象一下某个邪恶的政府拥有CA,或者可以强制CA为您访问的站点颁发证书。然后,进行一次MITM非常简单:他们可以代理您的连接,将其拥有的证书发送给您的浏览器,由于它来自“受信任”的CA,因此您的浏览器将接受它。在它们是DNS透明的(这是MITM的基础)之前,这是可以的。

因此,“接受的CA列表”基本上是一个很大的安全漏洞,直到该CA中的一个与某些邪恶的政府合作为止。拥有自己的CA会更好。

当然,您可以在公司或家庭服务器中执行此操作,因为您可以将自己的CA证书安装到客户端中,您也可以对其进行控制。在公共服务器中,您无法与任何用户打交道,也不能要求他添加例外或添加证书。

因此,这取决于您对“安全性”的含义以及范围。如果您拥有客户端,那么可以肯定,自签名会更安全,直到在客户端本身上安装自己的CA证书为止。

当然,由于您不拥有所有客户,因此您不能在公共网站上进行此操作。因此,您将面临各种行为的危险,这是不安全的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.