0

外部ベンダーのWSは「自己署名証明書」を使用しており、以下のスレッドの手順に従って、証明書をトラストストアにダウンロードしてインポートしました。

デジタル証明書:を使用して.cerファイルを.truststoreファイルにインポートする方法は?

また、次のコマンドを実行して、証明書が正しく追加されたことを確認しました。

keytool -list -v -keystore keystore.jks

run.config(JBoss)ファイルに次のエントリを追加しました。

if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djavax.net.ssl.trustStore=/jboss/jdk1.6.0_25/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassworld=changeit"
fi

サービスを再起動しても、次の実行が行われます。

ERROR [org.jboss.ws.core.CommonClient] Exception caught while (preparing for) performing the invocation: 
java.io.IOException: Could not transmit message 

....
....
....

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

何が欠けている可能性がありますか?

4

1 に答える 1

0

アプリケーションをデプロイした JBoss インスタンスを実行するために、同じ JVM (プロパティ javax.net.ssl.trustsotre で指定したもの) を使用していますか?

その場合、信頼できる証明書を JVM-JRE の cacerts ファイルにインストールしていると思われる場合、JVM はデフォルトで $JAVA_HOME/ で信頼できる証明書を探すため、これらのプロパティ (trustStore も trustStorePassword も指定しない) を指定する必要はありません。 jre/lib/security/cacerts (別のキーストアを使用する場合にのみ、これらのプロパティを定義する必要があります)

ああ、証明書が cacerts に正しくインストールされていることを確認するには、指定したのと同じコマンドを使用する必要がありますが、-keystore パラメーターを $JAVA_HOME/jre/lib/security/cacerts (keystore.jks ではない) に指定する必要があります。

于 2013-01-09T21:53:46.500 に答える