LetsEncrypt : LetsEncrypt 的中间证书

Posted

技术标签:

【中文标题】LetsEncrypt : LetsEncrypt 的中间证书【英文标题】:LetsEncrypt : Intermediate certificate for LetsEncrypt 【发布时间】:2017-03-18 06:21:47 【问题描述】:

我们目前正在使用 LetsEncrypt SSL 证书,它运行良好。经过一些修改后,我们也可以将其拉入 Tomcat 和 Apache Web 服务器。

目前,我们希望将 LetsEncrypt 证书添加到 Etherpad,它需要 intermediate CA 文件。如何从 LetsEncrypt 提供的 4 个证书文件中获取这些文件。谢谢。。

LetsEncrypt SSL 设置:

 "ssl" : 
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          ,

在上面的配置中,我假设 Key 是 privkey.pem 转换为 .key 文件,.crt 是 cert.pem 转换为 cert.crt。 CA 里有什么?

谢谢。

更新

设置:

 "ssl" : 
            "key"  : "/etc/letsencrypt/live/www.project_name.de-0001/private.key",
            "cert" : "/etc/letsencrypt/live/www.project_name.de-0001/cert.crt",
            "ca": "/etc/letsencrypt/live/www.project_name.de-0001/root.crt"
          ,

尝试键时的错误日志:

[2016-11-04 13:25:15.612] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues
[2016-11-04 13:25:15.612] [INFO] console - Your Etherpad version is 1.6.0 (7dd934f)
[2016-11-04 13:25:15.613] [INFO] console - SSL -- enabled
[2016-11-04 13:25:15.613] [INFO] console - SSL -- server key file: /etc/letsencrypt/live/www.project_name.de-0001/private.key
[2016-11-04 13:25:15.614] [INFO] console - SSL -- Certificate Authority's certificate file: /etc/letsencrypt/live/www.project_name.de-0001/cert.crt
[2016-11-04 13:25:15.615] [ERROR] console - Error: EISDIR: illegal operation on a directory, read

【问题讨论】:

只是download them。 Lets Encrypt 的信任链相当复杂,您不需要全部。 @BoristheSpider :我下载了 ISRG Root X1,并假设它是 cert1.crt。我先试试看。谢谢。 @BoristheSpider :我尝试了您建议的证书文件,但出现错误。你能检查一下更新的主帖吗?谢谢。 如果你暂时去掉ca这一行,你还会看到这个错误吗? @AnandBhat:那行得通。谢啦。您可以将其发布为我接受的答案。谢谢你。 :-) 【参考方案1】:

在与cert.pem 相同的目录中应该有一个名为chain.pem 的文件,它包含到根CA 的证书链(对于我的证书,它只是一个证书,但将来可能会改变)并且应该成为你想要的。

$ ls live/my.domain.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem

我对 Etherpad 不熟悉,但我猜你应该这样配置它:

 "ssl" : 
            "key"  : "/etc/letsencrypt/live/www.project_name.de-0001/private.key",
            "cert" : "/etc/letsencrypt/live/www.project_name.de-0001/cert.pem",
            "ca": "/etc/letsencrypt/live/www.project_name.de-0001/chain.pem"
          ,

【讨论】:

谢谢。你能告诉我应该如何填充它,因为我尝试了一种配置但它不起作用。我在主帖中添加了更多信息。谢谢。 谢谢,但我仍然在 cert.pem 上遇到错误。同样的错误。有什么想法吗? 由于我对 Etherpad 不熟悉,因此恐怕无法真正帮助您。我只能告诉你,你手头似乎有正确的证书。没有 SSL 也能用吗? 是的,没有 SSL 也没问题。我们正在尝试为其配置 SSL。谢谢.. :-) 嗯,您帖子中的错误消息看起来像是指向目录而不是文件。但我真的不能贡献更多,对不起【参考方案2】:

由于您不应该以 root 身份运行 etherpad,但可以以 root 身份使用letsencrypt,因此您首先需要运行 etherpad 实例的用户对证书具有读取权限。由于我的 etherpad 用户无权访问letsencrypt 我将 && chown 复制到另一个目录 a.e. /opt/certs/ 我的 etherpad 用户可以访问的地方。这可以通过 cronjob 在检查过期的letsencrypt证书时完成。

然后在 settings.json 中你需要添加 chain.pem 和 fullchain.pem 使用

"ca":["path to chain.pem", "path to fullchain.pem"]

settings.json 中的部分如下所示:

"ssl" : 
            "key"  : "/opt/certs/privkey.pem",
            "cert" : "/opt/certs/cert.pem",
            "ca": ["/opt/certs/chain.pem", "/opt/certs/fullchain.pem"]
          ,

fullchain.pem 可能缺少根 ca。 在letsencrypt 过程中,仅添加chain.pem 而没有根CA。然后您必须在chain.pem 之后合并IdenTrust 根证书。 fullchain.pem 应该有它们,但有时看起来它缺少链中的“最后一个”:

https://www.identrust.com/certificates/trustid/root-download-x3.html 为我工作。

fullchain.pem 看起来像这样

-----BEGIN CERTIFICATE----- 
 your chain.pem
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- 
 the intermediate / root ca https://letsencrypt.org/certificates/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----

【讨论】:

以上是关于LetsEncrypt : LetsEncrypt 的中间证书的主要内容,如果未能解决你的问题,请参考以下文章

sh 我的Automated LetsEncrypt更新程序的第一次修订为ZNC和朋友使用letsencrypt工具

sh 用于通过letsencrypt的docker镜像更新docker nginx代理中的letsencrypt证书的模板

Letsencrypt Tomcat https 整理

Letsencrypt在Ubuntu的实践

nginx LetsEncrypt

如何将LetsEncrypt onHostRule与LetsEncrypt的Consul Catalog后端一起使用?