Tomcat 6上で動作するアプリケーションをSSL経由でLDAPサーバーに接続しようとしています。Javaキーストアに証明書をインポートしましたが、JVMは新しい証明書を無視します
私が使用してキーストアにサーバーの証明書をインポート:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
私はSSLのデバッグでTomcatを起動Tomcatが正しい証明書ファイルを使用して、ログによると、オン:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
しかし、 cacertsファイル内の他のすべての本命がログに出力されている - - 、Tomcatは、私はちょうど輸入証明書を追加しないと、接続は失敗します。
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Tomcatを再起動することは役に立ちません。 keytool -listコマンドを使って新しい証明書が実際にファイルに存在することを確認しました。
なぜTomcatは新しい証明書を無視し続けるのですか?
EDIT:
は、問題は、Windows 7 VirtualStoreによって引き起こされたものと思われます。 Keytoolはcacertファイルの新しいコピーを作成し、Tomcatは元のファイルを使用しました。
ファイル 'mycert'には証明書チェーン全体が含まれていますか? Javaは、信頼パス全体がストア内に存在することを望んでいます。 – Romain
あなたの 'C:\ Users \ YourAccountName'に行くと、ファイル名' .keystore'がそこにあり、それを開いて前のファイルを削除してから、もう一度やりました。うまくいけばそれはあなたのために物事を並べ替えるでしょう:-) –
@Romainいいえ、信頼できる証明書はチェーンとは関係ありません。信頼できる証明書としてインポートされた証明書は、信頼されたルート証明書のように扱われます。 – emboss