Почему при отправке на сервер с использованием самозаверяющего сертификата в Orbeon Forms происходит сбой? - PullRequest
2 голосов
/ 20 октября 2010

При выполнении представлений (<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) 

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

1 Ответ

3 голосов
/ 20 октября 2010

При отправке запроса 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:

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

...