Answers:
通常,使用自签名证书很不好。如果这样做,那么就会冒风险,当人们收到关于您的证书不正确的警告时,他们将离开您的网站。更重要的是,您冒着他人进行注射攻击的更大风险,因为他们使用自己的自签名证书代替了您的证书,而访问者将一无所知。
在这里查看文章http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.html,以获取更多信息。
正如RandomBen所说,出于他解释的原因,通常不赞成使用自签名证书。但是在某些情况下它们会很好:如果需要向您的网站提交敏感数据的人员很少且数量有限,那么他们在技术上都具有一定的能力,并且您能够与所有人进行交流。在这种情况下,您可以为每个人提供证书详细信息,然后他们可以在访问您的站点时手动检查证书,并在适当时添加安全例外。
举一个极端的例子,在我的个人VPS上,我有一个管理子域,该子域只能由我访问。使用自签名证书保护该域没有问题,因为我可以手动检查用于保护连接的服务器证书与我在服务器上安装的证书相同。
如果自签名证书不起作用或者您希望拥有一个“真实的”证书,我建议由互联网安全研究小组发起并由主要互联网公司支持的项目Let's Encrypt,该项目在以下位置提供SSL证书:免费。他们之所以这样做,是因为他们使用的验证过程是完全自动化的,实际上,支持其ACME协议的Web服务器(例如我当前使用的Caddy)可以完全自己获取证书。让我们加密不验证您作为一个人,你说的是谁;它仅验证您的Web服务器能够在其声称的域上提供内容。所有主流浏览器都支持Let's Encrypt,但是众所周知,验证很少,因此,如果您运行的是电子商务网站之类的东西,或者人们会提交敏感信息的任何事物,则您可能应该花钱来获取具有更高验证级别的证书。
我曾经向那些不想付费但又不想付费的人推荐StartCom的免费StartSSL证书。StartCom在2016年被WoSign秘密收购,随后为多个域颁发了非法证书。结果,主要的浏览器取消了对StartCom证书的支持。(据我所知,IE始终不支持它们。)无论如何,“让我们加密”要方便得多。
这是不是不好的做法,使用自签名证书。自签名证书具有许多实际用途,使用CA签名证书根本没有意义。
例如,在我的许多服务器上,我都设置了无密码登录。这些服务器连接频繁,有时会保持多个SSH连接打开,因此每次输入用户名和密码都很麻烦。
取而代之的是,我使用在每台客户端计算机(办公室的工作站,便携式计算机和家庭工作站)上生成的自签名SSL证书。这种设置使我可以为我的每台服务器使用相当长,安全且完全唯一的密码,而不会影响工作效率。而且,由于我可以直接访问可以为每个证书安装公钥的服务器,因此使用CA签名的证书对我来说毫无意义。
我可以设置自己的根CA,通过它可以签署公司的所有内部使用证书,这样,我只需要在每台服务器上安装一个公共密钥即可。但是,我们组织的规模还没有达到真正需要的规模,出于安全HTTP的目的,这仍然与拥有自签名证书相同。
同样,自签名证书通常用于电子邮件连接,PGP签名和服务器到服务器的连接,在这些情况下,预交换公钥很简单。在许多情况下,这实际上比依赖证书链更为安全,因为证书链可能会在链中的任何位置遭到破坏。