使用自签名SSL证书是一种不好的做法吗?


29

SSL证书对于个人而言非常昂贵,尤其是在您需要保护不同子域的情况下。我正在考虑使用自签名证书,因为我的主要重点是保护连接,而不是对自己进行身份验证。

但是,一些浏览器在遇到此类证书时会显示令人讨厌的警告。您是否会阻止使用自签名证书(例如,用于小型Web应用程序或小型网站的管理页面)?还是在某些情况下可以吗?

Answers:



14

正如RandomBen所说,出于他解释的原因,通常不赞成使用自签名证书。但是在某些情况下它们会很好:如果需要向您的网站提交敏感数据的人员很少且数量有限,那么他们在技术上都具有一定的能力,并且您能够与所有人进行交流。在这种情况下,您可以为每个人提供证书详细信息,然后他们可以在访问您的站点时手动检查证书,并在适当时添加安全例外。

举一个极端的例子,在我的个人VPS上,我有一个管理子域,该子域只能由我访问。使用自签名证书保护该域没有问题,因为我可以手动检查用于保护连接的服务器证书与我在服务器上安装的证书相同。

如果自签名证书不起作用或者您希望拥有一个“真实的”证书,我建议由互联网安全研究小组发起并由主要互联网公司支持的项目Let's Encrypt,该项目在以下位置提供SSL证书:免费。他们之所以这样做,是因为他们使用的验证过程是完全自动化的,实际上,支持其ACME协议的Web服务器(例如我当前使用的Caddy)可以完全自己获取证书。让我们加密不验证作为一个人,你说的是谁;它仅验证您的Web服务器能够在其声称的域上提供内容。所有主流浏览器都支持Let's Encrypt,但是众所周知,验证很少,因此,如果您运行的是电子商务网站之类的东西,或者人们会提交敏感信息的任何事物,则您可能应该花钱来获取具有更高验证级别的证书。

我曾经向那些不想付费但又不想付费的人推荐StartCom的免费StartSSL证书。StartCom在2016年被WoSign秘密收购,随后为多个域颁发了非法证书。结果,主要的浏览器取消了对StartCom证书的支持。(据我所知,IE始终不支持它们。)无论如何,“让我们加密”要方便得多。


+1为第一段。我在服务器上为Webmin使用了自签名证书,因为只有我自己和设计人员才能使用它,但是我不建议将其用于一般公众。
DisgruntledGoat 2010年

3

这是不是不好的做法,使用自签名证书。自签名证书具有许多实际用途,使用CA签名证书根本没有意义。

例如,在我的许多服务器上,我都设置了无密码登录。这些服务器连接频繁,有时会保持多个SSH连接打开,因此每次输入用户名和密码都很麻烦。

取而代之的是,我使用在每台客户端计算机(办公室的工作站,便携式计算机和家庭工作站)上生成的自签名SSL证书。这种设置使我可以为我的每台服务器使用相当长,安全且完全唯一的密码,而不会影响工作效率。而且,由于我可以直接访问可以为每个证书安装公钥的服务器,因此使用CA签名的证书对我来说毫无意义。

可以设置自己的根CA,通过它可以签署公司的所有内部使用证书,这样,我只需要在每台服务器上安装一个公共密钥即可。但是,我们组织的规模还没有达到真正需要的规模,出于安全HTTP的目的,这仍然与拥有自签名证书相同。

同样,自签名证书通常用于电子邮件连接,PGP签名和服务器到服务器的连接,在这些情况下,预交换公钥很简单。在许多情况下,这实际上比依赖证书链更为安全,因为证书链可能会在链中的任何位置遭到破坏。


我不明白为什么要使用SSL证书?您提到不想多次输入密码:您可以简单地将SSH私钥与ssh-agent结合使用,以在每台服务器上自动对您进行身份验证,而不必多次输入密码。
Wookai'2

@Wookai:那将是针对SSH的一种方法,但是使用SSL客户端证书是一种更通用的客户端身份验证方法。我还使用我的客户端证书进行HTTPS身份验证以及电子邮件,如果以后选择设置内部CA,它将变得更加灵活/强大。那时,我不需要为每个客户端/用户安装单独的私钥。这只是IMO的更强大的解决方案。
冒犯君主

2

如果要保护多个子域,则可能需要使用通配符证书通配符证书(取决于要保护的子域的数量)比每个域购买一个便宜得多;例如,一旦您使用了四个域,RapidSSL的通配符就会比单个证书便宜。

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.