SSL で使用するために、Java キーストアに既存の X.509 証明書と秘密鍵をインポートするにはどうすればよいでしょうか? 質問する

SSL で使用するために、Java キーストアに既存の X.509 証明書と秘密鍵をインポートするにはどうすればよいでしょうか? 質問する

X.509 証明書とキー ファイルのペアがあります。

これら 2 つを 1 つのキーストアにインポートするにはどうすればよいですか? Google で検索できるすべての例では、キーが常に自動的に生成されますが、すでにキーを持っています。

私が試してみました:

keytool -import  -keystore ./broker.ks -file mycert.crt

ただし、これは証明書のみをインポートし、キー ファイルはインポートしません。証明書とキーを連結してみましたが、結果は同じでした。

キーをインポートするにはどうすればいいですか?

ベストアンサー1

他の回答にリンクされているコメント/投稿で見つけた次の 2 つの手順を使用しました。

ステップ1: x.509証明書とキーをpkcs12ファイルに変換する

openssl pkcs12 -export -in server.crt -inkey server.key \
               -out server.p12 -name [some-alias] \
               -CAfile ca.crt -caname root

注意: pkcs12 ファイルにパスワードを設定してください。そうしないと、インポートしようとしたときに null ポインター例外が発生します。(他にもこの問題に悩まされている人がいた場合に備えて)。( jocull さん、ありがとうございます! )

注 2:-chain完全な証明書チェーンを保持するオプションを追加することをお勧めします。( Mafuba さん、ありがとうございます)

ステップ2: pkcs12ファイルをJavaキーストアに変換する

keytool -importkeystore \
        -deststorepass [changeit] -destkeypass [changeit] -destkeystore server.keystore \
        -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass some-password \
        -alias [some-alias]

終了した

オプション ステップ 0: 自己署名証明書を作成する

openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

FAQ: エラーが発生しますIOException: keystore password was incorrect

OpenSSL 3.0 と Java8u302 より新しい JDK を使用していて、次のエラーが発生する場合:

keytool error: java.io.IOException: keystore password was incorrect

openssl 内のデフォルトの暗号の変更に巻き込まれる可能性があります。このStack Overflowの回答回答を提供します。Thomas に賛成票を投じて感謝しましょう。

おすすめ記事