我的基于 Docker 的服务器的文档获得okd网站要求:
生成适当的 fullchain.pem (-out) 和 privkey.pem (-keyout) 文件。
使用易用性,我可以生成实体的文件sg
- 证书
- 证书密钥
- sg.crt,带有
Certificate: Data: Version: 3 (0x2) .... BEGIN CERTIFICATE
- sg.key,具有
--- BEGIN ENCRYPTED
我假设这是和fullchain.pem
的连接(我应该删除顶部的部分吗?),并且这可能是,但我的尝试总是导致错误消息。sg.crt
sg.key
Certificate
ca.key
privkey.pem
生成这两个必需文件的正确方法是什么?
答案1
不。CA 私钥应该绝不给予任何其他系统 - 它应该仅有的仅用于 CA 目的,不得用于其他目的。(任何拥有密钥的人都可以颁发任意证书并完全危及 CA。)
相反,该privkey.pem
文件需要包含与实体的自己的证书,即来自“sg.key”。并非所有服务都能够加载加密密钥(并且它们并不总是能够要求您输入密码),因此您可能需要使用 解密文件openssl pkey
。
该fullchain.pem
文件需要包含实体的证书本身,即来自“sg.crt”的证书,以及任何中间颁发者证书。您没有任何中间证书,并且该文件不需要包含根证书本身,因此在您的情况下,它可以是“sg.crt”的直接副本。(无论如何,大多数 CA 都会直接为您提供完整的链文件。)
将根 CA 证书 (ca.crt) 附加到链的末尾不会有什么坏处,但在大多数情况下它是无用的,因为信任 CA 的客户端无论如何都会拥有其证书。(这种情况的一个例外可能是某些 DANE/TLSA 模式,但这种情况极为罕见。另一个例外是交叉签名的根,但您没有这些。)
是的,您可以删除 CA 工具可能添加的任何“证书:”文本。软件只会查看分隔的 BEGIN/END 块,通常会忽略周围的任何文本。
答案2
该文件fullchain.pem
是包含服务器证书文件和中级证书。
easyrsa
不会产生中级证书因为它是为现有的证书颁发机构设计的。
您链接的文档有此部分使用自定义 SSL 证书如果您已从证书颁发机构获得证书,则提供信息除了 Let's Encrypt 之外。
意思是,如果您从其他机构(例如 GoDaddy 或 Digicert 等)购买了 SSL 证书,本文档的此部分将告诉您将从这些供应商处收到的文件放在何处,其中包括文件fullchain.pem
和privkey.pem
。