2013-04-17 24 views
23

私は、証明書のチェーンを持つファイルがある - certificate.cer:証明書チェーンをキーストアに追加する方法は?

subject=/C... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

subject=/C=US/O=VeriSign, Inc... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

subject=/C=US/O=VeriSign, Inc... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

私はキーストアに証明書のこのチェーンを追加する必要があります。私は何

openssl x509 -outform der -in certificate.cer -out cert.der 
keytool -v -importcert -alias mykey -file cert.der -keypass <passwd> -keystore keystore -storepass <passwd> -alias <myalias> 

結果で私は、キーストアでのみ1つの証明書を持っています。
しかし、3が必要です。
何が間違っている可能性がありますか?

SOLUTION:
CAは私にPKCS#7形式の証明書を送りました。
私はcertificate.p7bファイルにそれらを保存して、成功し、次のコマンドにより、キーストアにそれらを追加します。keytoolの男から

keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass <mypasswd> -alias "myalias" 
+0

どのバージョンのKeyToolが使用されましたか? '6-b14'は証明連鎖をインポートできません:' //私たちはひとつのIDごとに一つのユーザー証明書しか格納できません。 ' ソースコードを見てください: 'http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java#KeyTool.doImportIdentityDatabase%28java.io.InputStream%29' –

答えて

8

- 入力がPKCS#7形式で指定されている場合、それはそうでない場合にのみ、証明書チェーンをインポート単一の証明書がインポートされます。 openssl crl2pkcs7コマンドを使用して、証明書をopensslでPKCS#7形式に変換できるはずです。

+0

すでにPKCS#7に証明書がありますフォーマット。 CAが電子メールで私にそれらを送った。 keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass -alias "myalias"ありがとうございました! –

+10

私のために働かなかった。私はエラーを取得しています: 'keytool error:java.lang.Exception:X.509証明書を入力しないでください'。 p7pファイルは、次のように作成されました: 'openssl crl2pkcs7 -nocrl -certfile cacert.pem -certfile client-cert.pem -out outfile.p7b' –

+2

ここには、http:// stackoverflow.com/a/22028156/1817029 keytoolはp7pファイルをインポートできないことを伝えます。 –

14

私はすべてのPEMを一緒にcat'ingことで問題を解決:

(keytoolはPKCS7フォーマットされたキーに何をすべきかを知りませんでした)

cat cert.pem chain.pem fullchain.pem >all.pem 
openssl pkcs12 -export -in all.pem -inkey privkey.pem -out cert_and_key.p12 -name tomcat -CAfile chain.pem -caname root -password MYPASSWORD 
keytool -importkeystore -deststorepass MYPASSWORD -destkeypass MYPASSWORD -destkeystore MyDSKeyStore.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass MYPASSWORD -alias tomcat 
keytool -import -trustcacerts -alias root -file chain.pem -keystore MyDSKeyStore.jks -storepass MYPASSWORD 

私はletsencryptからすべてのPEMを得ました

+0

いいソリューション、p7bは私のためにインポートされていません – cen

+0

私のためにも働いています。その秘密鍵を入手するには、この他の回答が便利でした:https://security.stackexchange.com/a/66865/141918 –