3

Sun Glassfish サーバーで、SSL を介して外部 Web サービスと通信するアプリケーションをデプロイしました。

java keytool cli ( ) を使用して、証明書を cacerts.jks に手動でインポートしましたkeytool -import -trustcacerts -keystore cacerts.jks -alias somealias -file somecert.cer

すべてが機能することを確認しますが、しばらくすると機能しなくなり、ログに次の出力が表示されます。

[#|2010-06-18T09:13:23.930+0200|WARNING|sun-appserver9.1|...|_ThreadID=850;_ThreadName=p: thread-pool-1; w: 901;javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: The certificate chain from the server is not trusted|...|#]

そして、ここからサービスは機能しなくなります。ログによると、例外が発生する直前に証明書に質問があり、サーバーはデフォルトで「いいえ」と応答し、これがエラーの原因であると思われます。

しかし、サーバーが突然証明書に疑問を呈するようになったきっかけは何でしょうか? 証明書はすでにインポートされており、キーストアで信頼済みとしてマークされています。全日程OKです。私は何かを逃しましたか?

4

1 に答える 1

1

システム プロパティ ( javax.net.ssl.trustStore) を変更している他のアプリケーションが存在する可能性があります。javax.net.ssl.trustStore信頼されたキーストアを指しているものです。このシステム プロパティを出力して、変更されるかどうかを確認してください。もう 1 つのオプションは、次のオプションを使用して JVM を開始する -Djavax.net.debug=SSL,handshake,data,trustmanager ことです。これにより、stdout ログ ファイルに詳細な出力が得られるはずです。

于 2010-06-22T19:35:08.727 に答える