尽管我添加了中间证书,但它不在密钥库中

尽管我添加了中间证书,但它不在密钥库中

我的任务是在服务器中设置 ssl,该服务器使用 wildfly,所以我必须创建一个密钥库,其中包含我获得的所有证书、服务器证书、中间证书和密钥文件。

首先,我将服务器证书和中间证书链接起来,然后使用 openssl 创建 pkc12 文件。然后,我使用 keytool 从该 pkc12 文件创建密钥库。

问题是,当我打开密钥库文件或 pkc12 文件时,我发现它不包含中间证书,只有服务器证书。我以前做过这个过程,而且成功了

谁知道可能是什么问题?

额外信息:中间证书有点旧(从 2010 年开始)并且使用 sha1 并将在 9 个月后过期,这很奇怪,不像我的服务器证书,它是新的并且使用 sha256。

答案1

显然您的问题可能是中间证书错误。

确保您拥有正确的中级证书。

  • 对服务器证书运行以下命令:

    openssl x509 -noout -text -in server.pem | grep 'CA Issuers'
    
  • 然后打开grep找到的URL:

    wget http://url/ -O intermediate.der
    
  • 将下载的证书转换为PEM格式:

    openssl x509 -in intermediate.der -inform DER -outform PEM -out intermediate.pem
    

现在您肯定知道这intermediate.pem是您的服务器证书的正确中间证书。

假设链中只有一个中间证书。如果还有多个,则需要重复上述命令以intermediate.pem获取证书intermediate2.pem,依此类推。

运行以下命令来创建 JKS 存储。

  • 创建证书包:

    cat server.pem intermediate.pem > bundle.pem
    
  • 创建 pfx/pkcs12 格式的包:

    openssl pkcs12 -export -out bundle.pfx -inkey server.key -in bundle.pem
    
  • 创建 JKS 密钥库:

    keytool -importkeystore -srckeystore bundle.pfx -srcstoretype pkcs12 -destkeystore store.jks -deststoretype JKS
    
  • 检查密钥库:

    keytool -v -list -keystore store.jks
    

您应该看到下列内容:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: 1
Creation date: May 19, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=example.com
Issuer: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
...
Certificate[2]:
Owner: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Issuer: CN=DST Root CA X3, O=Digital Signature Trust Co.
...

相关内容