web-dev-qa-db-ja.com

追加したのにキーストアにない中間証明書

サーバーにSSLを設定するタスクがありましたが、このサーバーはwildflyを使用しているため、取得したすべての証明書、サーバー証明書、中間ファイル、およびキーファイルを含むキーストアを作成する必要があります。

最初にサーバー証明書と中間証明書をチェーンアップし、次にopensslを使用してpkc12ファイルを作成しました。次に、keytoolを使用して、そのpkc12ファイルからキーストアを作成しました。

問題は、キーストアファイルまたはpkc12ファイルを開くと、中間証明書が含まれておらず、サーバー証明書しか含まれていないことがわかりました。私は以前にこの手順を実行しましたが、うまくいきました

誰もが問題が何であるか知っていますか?

追加情報:中間証明書は少し古く(2010年から)、sha1を使用し、9か月で期限切れになります。これは、新しく、sha256を使用するサーバー証明書とは異なります。

3
logax

どうやらあなたの問題は間違った中間証明書である可能性があります。

正しい中間証明書があることを確認します。

  • サーバー証明書に対して次のコマンドを実行します。

    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がサーバー証明書の正しい中間証明書であることが確実にわかりました。

チェーン内に中間証明書が1つだけあると仮定します。それ以上ある場合は、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.
...
1
Sergey Nudnov