2012-03-27 93 views
24

this post に従ってSSL証明書を更新しようとしています。エラーSSL証明書をインポートする:X.509証明書ではありません

私は証明書にnoobですので、私はthis guideに従っています。私はこの問題を解決するにはどうすればよい

keytool error: java.lang.Exception: Input not an X.509 certificate 
java.lang.Exception: Input not an X.509 certificate 
     at sun.security.tools.KeyTool.addTrustedCert(KeyTool.java:1913) 
     at sun.security.tools.KeyTool.doCommands(KeyTool.java:818) 
     at sun.security.tools.KeyTool.run(KeyTool.java:172) 
     at sun.security.tools.KeyTool.main(KeyTool.java:166) 

:しかし、私は

keytool -keystore mycacerts -storepass changeit -importcert -file "C:\Users\Noks\Desktop\cacerts.pem" -v 

を入力したときに、私はエラーを取得しますか?

+0

私はJava 1.6以上でコマンドが絶対にうまく動作すると思います –

答えて

24

あなたcacerts.pemファイルには、単一の証明書を保持していますか?それはPEMがあるので、それを見て、それは

-----BEGIN CERTIFICATE-----

で始まり、最後に

-----END CERTIFICATE-----

で終了する必要が持っている、それが破損していない確認するために、opensslのを手に入れますそして、証明書のIを提供します

openssl x509 -in cacerts.pem -text

+0

これは多くのユニットが含まれていますので、私はちょうどone.Itを組み込むように変更しました:) – nikel

+0

BEGIN CERTIFICATEとデータ全体の間にEND CERTIFICATE?私も同じ問題に直面しています。あなたがしたことを言って助けてください。 –

+1

行はすでにそこにあるはずです。そうでない場合は、あなたの証明書がDERでエンコードされている(または無効である)可能性があります。変換するには 'openssl x509 -in mycert.der -inform DER -out myCert.pem -outform PEM'を実行します。 'openssl -in myCert.pem -text'を見て確認する。ファイルには単一の証明書が含まれている必要があります。 –

25

多くのCAを使用して、その詳細を印刷n PKCS7フォーマット。

Oracle documentationによると、キーツールのcommmandは、PKCS#7を扱うことができるが、PKCS7ファイルはX.509にPKCS7から、それを変換する試みをインポートすることができない場合は、時にはそれが

The keytool command can import X.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type. The data to be imported must be provided either in binary encoding format or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard. In the latter case, the encoding must be bounded at the beginning by a string that starts with -----BEGIN, and bounded at the end by a string that starts with -----END.

を失敗:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 
3

これは古いスレッドのようですが、ここで私の経験を追加します。私も証明書をインストールしようとし、そのエラーが発生しました。その後、txtエディタでcerファイルを開き、各行の最後に余分なスペース(文字)があることに気付きました。これらの行を削除すると、証明書をインポートすることができました。

希望これは他の誰かに何か価値があります。

+0

これは私にとっても問題でした。証明書プロバイダからの電子メールから証明書のテキストを直接コピーして、各行の最後にスペースを残したと思います。 – Continuity8