OpenSSL在LetsEncrypt-Certificate上使用-CAFile

时间:2017-12-13 18:04:50

标签: ssl tomcat8 confluence lets-encrypt plesk-onyx

我目前正试图在装有Plesk(17.5.3)的Ubuntu服务器上设置Confluence(6.6.0)并安装Let-'s-Encrypt-Extension。

Confluence本身已启动并正在运行,但在遇到SSL问题时,我遇到了一些问题。只需采取简单的道路即可轻松实现域名本身的安全保障。通过Plesk-Panel一键安装程序。

证书将位于/usr/local/psa/var/modules/letsencrypt/etc/archive/<MY_DOMAIN>/

此目录中有四个.pem文件:

  • cert1.pem
  • chain1.pem
  • fullchain1.pem
  • privkey1.pem

但现在我需要告诉Tomcat,我已经在server.xml中安装了此证书 由于Plesk-Let-Encrypt-Extension将文件保存为.pem文件,我需要通过OpenSSL将它们转换为能够使用Java keytool。 我在这里找到了关于这个主题的一个很好的教程:
http://robblake.net/post/18945733710/using-a-pem-private-key-and-ssl-certificate-with

当我尝试以下操作时,当我尝试执行

时,我开始陷入困境
openssl pkcs12 -export -in <PATH>/cert1.pem -inkey <PATH>/privkey1.pem -out foo.p12 -name tomcat -chain -CAFile <PATH>/chain1.pem

当我不使用-CAFile并生成我的.p12-File时,命令本身会运行,但随后会发出警告:

Error unable to get local issuer certificate getting chain.

如果我尝试添加-CAFile /usr/local/psa/var/modules/letsencrypt/etc/archive/<MY_DOMAIN>/chain1.pem或使用[...]/fullchain1.pem,则不会发生任何事情,但OpenSSL会打印使用情况文档。

因此,由于这四个.pem文件是唯一可用的,我不知道还能做什么。

由于我也需要中级证书,我想知道我必须在这做什么。

1 个答案:

答案 0 :(得分:4)

来自Let's Encrypt的chain1.pem文件看起来不完整。在我的情况下,它只包含一个证书 - 中间CA 让我们加密权限X3

检查此文件的内容。在我的情况下,只有一个证书。

openssl x509 -noout -in chain1.pem -subject -issuer

subject= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
issuer= /O=Digital Signature Trust Co./CN=DST Root CA X3

错误的原因是openssl错过了 DST Root CA X3 的证书

如何创建完整的链。

  1. 下载DST根CA X3证书:

    wget http://apps.identrust.com/roots/dstrootcax3.p7c
    
  2. 将其转换为PEM

    openssl pkcs7 -inform der -in dstrootcax3.p7c -out dstrootcax3.pem -print_certs
    

    目前,DST根CA X3的证书位于dstrootcax3.pem

  3. 构建完整链(覆盖fullchain1.pem

    cp chain1.pem fullchain1.pem
    echo >> fullchain1.pem
    cat dstrootcax3.pem >> fullchain1.pem
    
  4. 生成P12文件

    openssl pkcs12 -export -in cert1.pem -inkey privkey1.pem -chain -CAfile fullchain1.pem -out cert1.p12 -name tomcat
    
  5. 检查所有证书是否存储在P12文件中:

     openssl pkcs12 -info -in cert1.p12
    

    祝你好运keytool;)