Ошибка SSL при открытии входного потока

#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

чтобы обойти проблему, импортируйте сертификат сервера.