#java #ssl
#java #ssl
Вопрос:
Я думаю, я пытаюсь понять, как работает SSL, у меня есть приложение на основе grails как часть процесса подачи заявки, мы должны открыть «https» соединение с сторонним приложением. Но столкнулся со следующим исключением
"sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
Хотя подключение к URL-адресу работает нормально, но возникает ошибка, когда я пытаюсь открыть входной поток для чтения данных. Вопрос в том, есть ли проблема с сертификатом, не должна ли у меня возникнуть проблема при открытии соединения?
фрагмент кода прилагается
try{
URL url= new URL("https://.../..")
def c = url.openConnection()
println("connection successful with Merchant")
def result = c.inputStream.text?.trim() // results in error
println(result)
}
catch (Exception exp){
println("error !!!")
println(exp.getMessage())
}
Ответ №1:
Это очень распространенная проблема для людей, начинающих работать с SSL и управлением сертификатами. Я отвечаю на этот вопрос с очень подробными примерами и командами в статье под названием «Импорт не известных сертификатов» в моем блоге AllInGeek.com .
Комментарии:
1. Хотя мои примеры выполняются в среде Linux, если вы используете Windows, должны работать те же аргументы командной строки для keytool.
2.Спасибо за подробное объяснение. Проблема, с которой я застрял, заключается в том, что я пытаюсь развернуть приложение в Amazon EC2, и в настоящее время нет простого способа обновить хранилище доверия. Пытаясь выяснить мои варианты, я столкнулся с одной странной вещью: аналогичный / тот же сертификат другого поставщика работает нормально, пока я сталкиваюсь с проблемой только с поставщиком. Оба этих поставщика сертифицированы verisign. если вы посмотрите на сертификат этих 2, он выглядит точно так же payment.atomtech.in/paynetz/epi/fts billdesk.com/pgidsk/pgijsp/citicard/citibank_card.jsp
Ответ №2:
Это просто означает, что веб-сервер или URL-адрес, к которому вы подключаетесь, не имеют действительного сертификата от авторизованного центра сертификации.
Вы можете проверить это с помощью другого ssl-сайта или выполнить следующие действия:
http://www.java-samples.com/showtutorial.php?tutorialid=210
чтобы обойти проблему, импортируйте сертификат сервера.