76

次の手順を使用して、TLS を使用する Java (内部) サーバーによって使用される秘密鍵と公開鍵のペアを持つ新しい 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) KeyStoreExplorerなどのプログラムを使用して、ペア (秘密鍵と自己署名証明書) を新しい 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

問題は、GUI を使用せずに Java KeyStore を作成し、公開鍵と秘密鍵を含む証明書の両方をインポートするにはどうすればよいかということです。

4

2 に答える 2

182

秘密鍵と公開証明書を使用して、最初に 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 証明書につながる証明書チェーンをインポートすることをお勧めします。

于 2013-07-17T21:31:03.923 に答える