自签名SSL证书是否属于安全漏洞?

自签名SSL证书是否具有错误的安全感?

如果你被窃听,用户会像他/她一样接受证书。

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

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

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

我不同意,一次是以狭义的技术理由,一次是基于一般的理由。

技术上的狭隘之处在于OP询问了自签名证书,还有几个答案是指私人CA签署的证书,这是一个稍微不同的问题。 但不是非常不同,所以这只是一个笔记。

主要的反对意见是,我认为只要商业签署的证书不仅仅是微不足道的开支,而且每年40美元对于地球上的许多人来说并不是一笔小小的开支 – 自签证书可以发挥重要作用在互联网安全方面, 只有认识到自身的局限性

自签名证书就像我的known_hosts文件中的ssh密钥。 如果没有独立的核实,它不能保证我正在和我相信我的系统交谈。 但是可以向我保证,我现在正在和之交谈的系统与我上次谈到的系统是一样的,我认为我正在与之交谈。 我们一直都在cachingssh密钥,而且我从来没有遇到过一个系统pipe理员,他/她的known_hosts文件中只有一小部分公钥被独立validation。

自签名证书(对于这个问题,由非普遍有效的CA签署的证书)比完全没有SSL要好得多,只要人们认识到,除非他们validation他们只保证与他们自己的通信,服务器在DNSlogging的另一端,以及目前在线的任何中间人。 如果他们独立validation证书,那么validation和encryption至less与由经认可的CA签署的证书所提供的validation和encryption一样强。

此外,希望将认可机构签署的证书作为唯一的互联网安全万能药的使用者,可能需要认真思考如何在标准的Mozilla捆绑中join中国政府的签名CA, 由Comodo签名的欺诈SSL证书 。

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

  • 首先,没有预先安装的CA证书,用户如何确authentication书确实来自您,而不是来自攻击者? 通过匹配证书字段(CN,指纹等),当然 – 但反对什么? 所以现在你需要一个旁道来validation证书 – 在我看到的less数情况下,支持线运营商(谁应该担任validation的旁道)并不知道这应该是什么意思。 另外,操作这样的旁路比获得信任的CA签名的证书要昂贵得多,所以用户必须盲目信任你。

  • 其次,用户可怕的警报有一个很好的理由:由于用户不能/不会validation所提供的证书,他们可能会安全地将数据传输到Elbonian Haxx0r D00dz。

  • 第三,也是最糟糕的是, 你对用户不敏感 :“好吧,他们告诉我,我应该忽略https://mysite.example.com/上的警告,一个铁砧也没有落在我的头上,而我的金鱼也没有死,所以这意味着它只是另一个没有任何实际意义的警戒盒,所以只要遇到它,我就可以忽略这个盒子 – 无论如何,我都能得到那个漂亮的锁图标,这很重要。

换句话说,保护级别与简单的HTTP相当(除了在线嗅探:尽pipe数据在传输中encryption,这是一个相当贫乏的特征,没有端点validation),但保护的感觉是不合理的高。 不好的车比喻:“我有ABS,所以现在我可以在恶劣的条件下驾驶更安全” – 除了ABS只存在于汽车的销售手册中,实际上并没有出现在车内。

build议阅读: OWASP SSL最佳做法

TL; DR:通过在面向公众的网站上使用自签名证书,使networking变得更加糟糕,每次都是一个无知的用户。

依靠。 如果你认为这会让你更安全,那么当你select用虚假的安全感来做风险更高的事情时,就会增加你的风险。 如果你在function上等同于HTTP,那么我会说你更安全一些。

没有SSL / HTTPS您的networking上的任何人(或任何login的任何人的本地networking)可以平凡的监听和捕获以纯文本forms发送的用户名/密码。

使用自签名的SSL,他们不能简单地收听,但现在必须伪造您的网站,可能会改变DNS做中间人(MITM)攻击的人。 这仍然是一个威胁,但是要完成这个任务要困难得多。

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

所以底线是:如果你运行一些不需要特别安全的东西(比如没有信用卡数据,没有社会安全号码),也买不起合适的证书,那么自签证书可能会有一定的意义(说阻止其他networking用户轻易地嗅探他们的login信息)。

这取决于你的意思是什么“安全”,这是多大的程度。

例如,您的浏览器带有一组默认接受的CA. 这意味着,由该CA颁发的任何证书都将被您的浏览器接受(直到它与dns名称匹配)。 现在,设想一些邪恶的政府拥有一个CA,或者可以强制CA为您正在访问的网站颁发证书。 然后,做一个MITM是很容易的:他们可以代理你的连接,向你的浏览器发送他们拥有的证书,并且浏览器会接受它,因为它来自一个“可信”的CA. 直到他们是DNS透明(这是MITM的基础),这是好的。

所以,“被接受的CA”名单基本上是一个很大的安全漏洞,直到这个CA与一个邪恶的政府合作。 拥有自己的CA要好得多。

当然,您可以在公司或家庭服务器上执行此操作,因为您可以将自己的CA证书安装到您也控制的客户端中。 在公共服务器中,你不能处理任何用户,要求他添加一个exception,或者添加你的​​证书。

所以,这取决于你的“安全”和范围。 如果你拥有这些客户,FOR SURE,自签名是安全的,直到你在客户端上安装你自己的CA的证书。

当然,你不能在公共网站上做,因为你不拥有所有的客户。 所以你会受到不同行为的危害,这是不安全的。