1. ホーム
  2. java

Java KeyStoreの秘密鍵/公開証明書ペアのインポート【重複】について

2023-11-07 15:11:32

質問

私は以下の手順で、Java(内部)サーバーがTLSで使用する秘密鍵/公開鍵のペアを持つ新しいJavaキーストアを作成しました。証明書は自己署名されていることに注意してください。

1) AES256で鍵を生成する。

openssl genrsa -aes256 -out server.key 1024

2) CAへの証明書要求の生成

openssl req -x509 -sha256 -new -key server.key -out server.csr

3) 自己署名入りの有効期限10年を生成する。

openssl x509 -sha256 -days 3652 -in server.csr -signkey server.key -out selfsigned.crt

4) 次のようなプログラムを使う キーストアエクスプローラ のようなプログラムを使用して、新しい JKS にペア (秘密鍵および自己署名証明書) をインポートします。

これは動作しますが、最後のステップをGUIを使用せずに実装したいと思います。

自己署名証明書だけをインポートする方法は知っています。

// create the keystore and import the public key. THIS WILL NOT IMPORT THE PRIVATE KEY SO THE KEYSTORE CAN'T BE USED ON THE SERVER TO MAKE THE TLS CONNECTION
/usr/java/jdk1.6.0_45/bin/keytool -import -alias myservercert -file server.crt -keystore mykeystore.jks

そこで質問ですが、Java KeyStoreを作成し、GUIを使わずに公開鍵付き証明書と秘密鍵の両方をインポートするにはどうしたらよいでしょうか?

どのように解決するのですか?

秘密鍵と公開証明書を使って、まずPKCS12キーストアを作成し、それをJKSに変換する必要があります。

# Create PKCS12 keystore from private key and public certificate.
openssl pkcs12 -export -name myservercert -in selfsigned.crt -inkey server.key -out keystore.p12

# Convert PKCS12 keystore into a JKS keystore
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert

JKSの内容を確認するには、このコマンドを使用します。

keytool -list -v -keystore mykeystore.jks

これが自己署名証明書でない場合、おそらくこのステップに続いて、信頼できる CA 証明書につながる証明書チェーンをインポートしたいと思うでしょう。