2

<xforms:submission>自己署名証明書を使用するサーバーに対してHTTPS経由で送信()を実行すると、次のような例外がログに表示されます。

ERROR XFormsServer  - XForms - submission - xforms-submit-error throwable: sun.security.provider.certpath.SunCertPathBuilderException 
: unable to find valid certification path to requested target 
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174) 
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238) 
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280) 
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191) 

どうすればこれを解決できますか?

4

1 に答える 1

3

HTTPS要求を行うとき、Javaはサーバーの証明書をチェックします。証明書は自己署名されているため、Javaはそれが正当な証明書であることを確認できません。したがって、「要求されたターゲットへの有効な証明書パスが見つかりません」というエラーメッセージが表示されます。

あなたがする必要があるのは次のいずれかです:

  1. 「実際の」証明書を使用します(たとえば、Verisignによって署名されています)。
  2. サーバーの証明書を「トラストストア」に追加し、そのトラストストアを使用するアプリケーションサーバーのJVMをセットアップします。

上記の#2を実行するための正確な手順は、環境によって異なりますが、本質的には次のとおりです。

  1. リクエストを処理するサーバーがJavaキーストアに自己署名キーを持っている場合は、それをエクスポートします。これyour-serverは、サーバーのキーストアのエイリアス、mykey.cer作成するkeystoreファイル、キーストアファイル、およびキーストアyour-passwordのパスワードです。

    keytool -export -alias your-server -file mykey.cer -keystore keystore -storepass your-password

  2. Orbeon Formsが実行されているサーバー(つまり、HTTPS要求を開始するサーバー)でmykey.cer、トラストストアにインポートします。truststoreこれがトラストストアファイルです。既存のトラストストアがない場合は、作成する新しいファイルである可能性があります。

    keytool -import -v -trustcacerts -alias your-server -file mykey.cer -keystore truststore -storepass your-password

  3. -Dアプリケーションサーバー(Tomcatなど)およびOrbeon Formsを実行するVMを起動するときに、次のパラメーターを追加します。

    -Djavax.net.ssl.trustStore=path/to/your/truststore -Djavax.net.ssl.trustStorePassword=your-password

于 2010-10-20T18:11:53.837 に答える