为什么我可以在本地生成 SSL 证书,却还需要购买呢?

为什么我可以在本地生成 SSL 证书,却还需要购买呢?

我不明白为什么我们需要购买 SSL 证书,而我们可以使用 openSSL 在本地生成证书。我购买的证书和我在本地生成的测试证书有什么区别?这只是一个大骗局吗?

答案1

一个词——信任。您的浏览器信任的提供商提供的 SSL 证书意味着他们至少已经进行了基本验证,以证明您是您所说的那个人。

否则,我可以为 google.com 或 yourbank.com 创建自己的证书并假装是它们。

付费证书通常不提供比自签名证书更高的加密级别。但自签名证书会导致浏览器抛出错误。

是的,SSL 的某些部分是骗局(Verisign 证书与 geotrust 证书相比,Verisign 证书的价格要高出 100 倍)但并非全部。

如果这些都是内部的事情,那么就不需要付费证书,因为您可以采用自己的信任方法(例如,什么都不做,或者只是进行指纹检查)。

答案2

SSL 证书的全部意义在于使浏览器对服务器用于 HTTPS 交易的公钥具有合理的信任度。

首先,让我们来看看如果我们不使用证书会发生什么。相反,服务器将以明文形式发送公钥,浏览器将使用它发起加密通信(它要做的第一件事就是加密自己的公钥并安全地发送)。如果我和攻击者夹在中间会怎么样?我可以用我的公钥即时替换你的公钥,与浏览器建立加密连接,解密我收到的所有内容,用你的公钥加密,然后发送(对于响应类型的流量,反之亦然)。没有人会注意到差异,因为没有人事先知道公钥。

好的,我们已经确定需要某种方式让浏览器信任我的公钥。一种方法是将所有注册的公钥存储在浏览器中。当然,每次有人注册公钥时都需要更新,这会导致膨胀。也可以将公钥保存在 DNS 服务器1手中,但 DNS 服务器也可能被欺骗,而且 DNS 不是一种安全协议。

因此,剩下的唯一选择是通过签名机制“链接”信任。浏览器存储一些 CA 的详细信息,您的证书将与其他证书链一起发送,每个证书都会签署下一个证书,并向上传递到根/受信任/内置 CA。CA 的工作是在为您签署证书之前确保该域属于您。

因为 CA 是一项业务,所以他们会收费。有的收费高,有的收费低。


如果您制作了自己的证书,您将会收到类似以下内容的错误:

在此处输入链接描述

未签名的证书毫无价值。这就像拿着铅笔和小册子画一本护照,声称你是巴拉克·奥巴马。没有人会相信它。

1. 毕竟,你的 DNS 条目是在你注册域名时创建的。使用更强大的协议让你同时注册公钥将是一个有趣的概念。

答案3

不存在技术差异(您自己的证书不会更不安全),只是组织差异:您的 CA 证书不是浏览器标准安装的一部分。这让大多数人难以连接到您的证书。但为内部网络购买证书是没有意义的。

答案4

重点是,如果证书是自生成的,普通用户就无法验证其真实性。对于购买的证书,他们至少应该验证证书中打印的内容是否正确。想法:如果你在证书中填写了你的电话和地址,CA 应该验证它,但他们很少这样做。

另外,购买的证书是可追溯的,这意味着用户可以随时追踪证书的来源,而自签名证书只是一个随机的身份。

对于许多系统来说,“代码签名”在过去都需要来自授权CA,这是由政策驱动的,但由于自签名证书数量众多,现在不再是100%强制执行。

相关内容