2010-10-20 1 views
1

При выполнении представлений (<xforms:submission>) над HTTPS против сервера, которые используют самостоятельно подписанный сертификат, я получаю исключение в журналах, что выглядит как:С Orbeon Forms, почему мои сообщения на сервере с использованием самозаверяющего сертификата не работают?

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) 

Как я могу решить эту проблему?

ответ

2

При выполнении запроса 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 формы выполняется (то есть сервер, который инициирует запрос HTTPS), импорт mykey.cer в хранилище доверенных. Здесь truststore - это ваш файл хранилища доверия, который может быть новым файлом, который вы создаете, если у вас нет существующего хранилища доверия.

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

  3. Добавьте следующие -D параметры при запуске виртуальной машины, которая работает сервер приложений (например, Tomcat) и Orbeon формы:

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

Смежные вопросы