从零开始生成Let's Encrypt的CRT和KEY SSL文件

59

我想用 Let's Encrypt (手动挑战) 生成 CRT/KEY 对的 SSL 文件。

我尝试了类似以下的命令:

certbot certonly --manual -d mydomain.com

但我只在/etc/letsencrypt/live/mydomain.com文件夹中找到以下这些文件:

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

我有遗漏了什么吗?


1
那是因为这些文件是提供SSL内容所需的文件等。如果您查看/etc/letsencrypt/csr下面,您会看到您实际的CSR。您可能正在尝试做的事情是将您的姓名、城市、地址等添加到证书中,但我认为LE不支持这样做,因为他们试图自动化其过程并且这是一个免费服务... - ivanivan
@ivanivan Let's Encrypt证书是DV证书,而不是OV证书,更不是EV证书。因此,它们中没有个人数据,只有技术端点(主机名)。 - Patrick Mevzek
@PatrickMevzek - 谢谢。我只知道当我从CA获取SSL证书时,通过正常的CSR方式(我只使用过StartSSL,最初的免费选项),需要回答关于城市、公司(如果我没记错的话,默认是Snake Oil Inc)等问题。 - ivanivan
@ivanivan 是的,当你生成一个OV时会有这些问题。DV只需要名称和对它们的验证(通过DNS或HTTP)。 - Patrick Mevzek
1个回答

121
我是Greenlock的作者,一个与certbot兼容的Let's Encrypt v2客户端,所以我也不得不学习所有这些东西的内外情况。
关键 privkey.pem是"key"文件。
有时它被错误地命名为cert.key或example.com.key。
CRT
fullchain.pem是您的"crt"文件。
有时它被错误地命名为example.com.crt。
CRT/KEY Bundle bundle.pem可以这样制作:cat fullchain.pem privkey.pem > bundle.pem。
HAProxy是我所知道唯一使用bundle.pem的服务器。

cert.pem

cert.pem 只包含您的证书,如果浏览器已经拥有签署它的证书,那么它只能单独使用,这在测试中可能有效(看起来可能是正确的文件),但实际上会导致许多用户在生产环境中遇到不受信任证书的安全错误。

然而,通常情况下,您不会单独使用 cert.pem。它几乎总是与 chain.pem 一起使用,形成 fullchain.pem。

chain.pem

chain.pem是中间签名机构,由根机构签名 - 这是所有浏览器在其预构建缓存中都有的。

检查证书

您只能这样检查证书:

openssl x509 -in cert.pem -text -noout

这里还有一份有用的命令列表

3
@GlennMohammad 说实话,我只是在采取立场,并过度热衷于用没有任何规律或理由的命名方式来平衡一个已经失控的世界。然而,我的技术理由是PEM是一个明确定义的RFC格式,而.key和.crt则是模棱两可的(可能是DER或PEM)。我会接受.pem.crt和.pem.key或.cert.pem和.key.pem,或类似的der变体。 - coolaj86
2
@CoolAJ86 哈哈哈,好的。你那有点叛逆的技术理性对我来说确实都说得通!所以再次感谢。 - Glenn Mohammad
我需要将这些.pem文件转换为.crt文件。我该怎么做? - Fernando León
1
@FernandoLeón 这要看情况。很多时候,.crt 已经是 PEM 格式的了。你可以直接将其重命名为 .pem。如果你的 .crt 不是 PEM 格式,那么它可能是 DER 格式,这种情况下你需要搜索如何从 DER 转换为 PEM。 - coolaj86
fullchain.pem + privkey.pem 也适用于 Keycloak X。非常感谢您的建议! - Oleg Gritsak
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接