Почему при использовании Orbeon Forms мои отправки на сервер с использованием самозаверяющего сертификата не выполняются?

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

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


person Orbeon Community    schedule 20.10.2010    source источник


Ответы (1)


При выполнении 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

person avernet    schedule 20.10.2010