需要加密但不信任时免费 SSL 证书?

信息安全 tls http
2021-09-12 13:28:11

我的理解是 SSL 证书很昂贵,因为您要向第三方支付费用以保证您的身份,显然最安全的信任形式是您必须支付的信任。我猜您获得的信任是一种表明您不是网络钓鱼网站或其他东西的方式(尽管我在网络钓鱼网站上看到了非常令人信服的 SSL 证书)。

无论如何,我有一个 API,它只需要客户端和 Web 服务器之间的加密通信。我不需要每年 200 美元的证书提供的信任因素,因为用户甚至没有使用 Web 浏览器来使用我的 API——他们使用的是自己编写的一些代码,并且 URL 是硬编码的进入他们的应用程序。

不幸的是,如果证书是自签名的,那么对于大多数新开发人员(他们将使用我的 API)来说,使用 SSL 证书是很棘手的。如果未导入不受信任的证书等,大多数编程框架都会抛出异常。这太烦人了,并且会使开发人员远离我的服务。但是,不加密流量不是一种选择。

我所需要的只是对网络流量进行加密,并且让使用我的 API 的开发人员不必费劲。进行加密的机制是免费和开源的,我不想购买额外的第三方“信任”。

TLDR / 结论:有什么方法可以生成大多数编程框架都信任的免费 SSL 证书?或者,在没有购买 SSL 证书的情况下,是否还有其他选项可以通过 HTTP 进行安全通信?

4个回答

您可以尝试StartSSL,它会为您颁发一个免费的 SSL 证书,该证书是受信任的。我在我的博客上使用了他们的证书之一,是的,它确实是免费的。诚然,他们的网站没有最好的用户界面,但如果你能接受,这听起来是你最好的选择。

不,这是不可能的,因为无法建立信任链。

默认情况下,您的访问者可能有权访问某些 CA,因为这些 CA 已投资以在最常见的浏览器/操作系统(或已创建)等中将自己建立为根 CA。如果没有免费的,您将无法建立免费的信任链,因此访问者无法验证您提供的任何内容都不是谎言。

编辑:Scott Helme 的链接不是我所知道的。看起来出于某些目的可能确实有一个免费的方法:https ://startssl.com/?app=40我看不到他们正在使用的 CA 密钥/它出现的浏览器的详细信息,但假设它是那里。

一旦自签名证书被排除在外,这里就没有很多选择了。但是请查看cacert.org,我听说过(一些)关于它的积极消息。它的使命似乎适合您的用例,它当然不是一个高质量、高信任度的证书,但它很可能满足您的需求。

对不起,但你要求的是不可能的。您只能拥有三分之二:免费啤酒、零麻烦或安全。可以不支付证书费用并且有一个简单的解决方案,但缺点是显而易见的。当然,您也可以支付证书费用,用户可以轻松使用我们的网站/服务,但您会少喝几杯啤酒。

有一种方法可以保留您的资金并加密您的连接。基本思想是使用 OpenSSL 生成证书,在您的 Web 服务上使用该证书,并将公钥发送给您的用户。他们必须在浏览器中安装它。但是这种方法可能会很麻烦,特别是如果您希望有很多用户,或者如果您没有其他安全通道可以提前向他们发送数据。