人们有时会问我为什么不使用 Let’s Encrypt,这是一个很长的故事。这与协议的邪恶程度有很大关系。看起来它是由那些喝了太多网络 kool-aid 的人创建的,因为它充满了可怕的东西。开始一个过程应该是一个小戏剧,接收一个魔法字符串,把它放在魔法路径的某个地方,然后戳验证器并说“去吧”。然后你只需回头看看它是否有效。
实际上用 ACME 的东西做这个是可怕的。几年前我第一次看这个,不仅协议不好,而且我检查的实现也很糟糕。其中一个的行宽超过 200 个字符。许多小狗在创建时付出了代价,而没有其他人关心的事实令人难以置信。
但是,我继续阅读。这个东西最终会运行 openssl(例如 /usr/bin 中的 CLI 工具集或其他),然后在输出中使用正则表达式。然后它把它变成一个 jwk,这就是“web kool-aid”出现的地方。这是协议的一部分,所以他们没有任何选择,但这只是你现在不得不担心支持的一件更糟糕的事情。
但不知何故,它变成了 JSON,然后它得到了 SHA-256 哈希,然后它的 base64 编码变成了指纹?所以它是可以重新排序或重新格式化的文本表示的 SHA,这应该有用吗?
然后它再次运行 openssl 来读取 CSR,等等。
无论如何,这就是我在 2018 年第一次遇到它之后到达的地方,然后在 2020 年重新考虑它之后,由于锁定,我发现自己有很多额外的时间。
但是现在呢?这与 Let’s Encrypt 无关。这是关于我找到一个假定的替代方案,并通过同样的尽职调查过程来了解我将要进入的领域。不知何故,几周前,我发现了另一个声称比 LE 更好的网站,它使用相对简单的 HTTP 请求,没有一堆有趣的数据类型。
我浏览了他们所有的 API 文档。您调用一个端点并告诉它您想要哪个或哪些域,然后输入 CSR。您还可以告诉它应该持续多少天:3 个月或 12 个月,或多或少。执行此操作后,它会告诉您如何执行验证。他们采用通常的技术:将这个神奇的 blob 放入 DNS 中,将一个神奇的 blob 放入您的文档根目录中的某处,或者确认您可以在某个地址接收电子邮件。
你的终端去设置它,然后回电话说“好的,我准备好了,去看看”。这开始了流程的滚动,并假设所有检查都通过了,理论上您很快就会收到证书问题。
听起来不错,对吧?我是这么认为的,并在此时创建了一个帐户来尝试一下。就在那时我看到它开始询问我想要什么样的帐户。我是想要一个免费帐户,还是要支付这么多、那么多或其他更大的金额?什么?他们之前没有提到这个。
这是细则终于出现的时候。此服务仅允许您在免费套餐上创建 90 天的证书。另外,你只能做其中的三个。然后你就完成了。一个域 270 天或 3 个域 90 天,然后你就完蛋了。那不是很好吗?
哦,最后呢?您不能在免费层上执行不那么疯狂的 API。是的。你必须为此付出代价。明白了,傻瓜!
我立即删除了我的帐户,并将这次经历标记为值得警示他人。
至少现在当人们问我为什么还在我的网站上使用老式证书时,我可以指出这篇文章。这是故意的。