При отправке запроса HTTPS Java проверяет сертификат сервера. Поскольку сертификат является самозаверяющим, Java не может подтвердить, что он является законным сертификатом, поэтому появляется сообщение об ошибке «невозможно найти действительный путь сертификации к запрошенной цели».
То, что вам нужно сделать, это либо:
- Используйте «настоящий» сертификат (например, подписанный Verisign).
- Добавьте сертификат вашего сервера в «хранилище доверенных сертификатов» и настройте JVM сервера приложений, использующего это хранилище доверенных сертификатов.
Точные шаги для выполнения # 2 будут зависеть от вашей среды, но по сути:
Если сервер, обрабатывающий запросы, имеет свой самоподписанный ключ в хранилище ключей Java, экспортируйте его. Здесь your-server
- это псевдоним хранилища ключей для вашего сервера, mykey.cer
- это файл, который вы создаете, keystore
- это файл хранилища ключей, а your-password
- пароль к вашему хранилищу ключей.
keytool -export -alias your-server -file mykey.cer -keystore keystore -storepass your-password
На сервере, на котором запущены Orbeon Forms (то есть на сервере, который инициирует HTTPS-запрос), импортируйте mykey.cer
в хранилище доверенных сертификатов. Здесь truststore
- это файл хранилища доверенных сертификатов, который может быть новым файлом, который вы создаете, если у вас нет существующего хранилища доверенных сертификатов.
keytool -import -v -trustcacerts -alias your-server -file mykey.cer -keystore truststore -storepass your-password
Добавьте следующие параметры -D
при запуске виртуальной машины, на которой работает ваш сервер приложений (например, Tomcat) и Orbeon Forms:
-Djavax.net.ssl.trustStore=path/to/your/truststore -Djavax.net.ssl.trustStorePassword=your-password