2017-02-17 17 views
0

Я пытаюсь вызвать веб-службу с помощью ssl. Он дает следующую ошибку:Perl Webservice Ошибка согласования SSL

500 SSL negotiation failed:

Я искал форум и применял предложенные методы, но ни один из них не работал.

2 методов, которые я примененные перечислены ниже:

1-) установка окружающей среды перед вызовом:

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

2-), проходящее ssl_opts параметра => [SSL_verify_mode => 0] для прокси:

my $soap = SOAP::Lite  
    -> on_action(....) 
    -> uri($uri) 
    -> proxy($proxy, ssl_opts => [ SSL_verify_mode => 0 ])  
    -> ns("http://schemas.xmlsoap.org/soap/envelope/","soapenv") 
    -> ns("http://tempuri.org/","tem"); 
$soap->serializer()->encodingStyle(undef); 

Есть ли решение для этого?

+0

Пожалуйста, запустите свой код с помощью 'perl -MIO :: Socket :: SSL = debug4 program.pl' и добавьте вывод в свой вопрос, так как он, вероятно, содержит информацию, которая может быть полезна при отладке проблемы. Кроме того, ssl_opts, вероятно, должен быть хеш-ссылкой, а не ссылкой на массив, как в вашем случае. –

+0

Что произойдет, если вы подключитесь к данному серверу с помощью 'openssl s_client -connect host: port'? – jcaron

+0

Кроме того, двоеточие в конце ошибки, которую вы цитируете, приводит меня к мысли, что после этого еще больше, не так ли? – jcaron

ответ

3

... Connection reset by peer at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/Net‌​/SSL.pm line 145

Вы работаете очень старую версию Perl (с 2004 года) вместе со старой версией SSL библиотеки (т.е. Crypt :: SSLeay вместо IO :: Socket :: SSL) и я думаю, что это связано с использованием очень старой версии библиотек OpenSSL для поддержки TLS. Эта комбинация означает отсутствие поддержки для SNI, отсутствие поддержки TLS 1.2 и отсутствие поддержки шифров ECDHE. Многим современным серверам необходима поддержка хотя бы одной из этих функций. Но connection reset by peer также может означать, что некоторые брандмауэры блокируют подключения или что сервер не прослушивает указанную вами конечную точку. Или это может означать, что сервер ожидает, что вы авторизуетесь с сертификатом клиента. Трудно сказать, но с захватом пакетов соединения можно было бы предоставить больше информации. И, если URL-адрес является общедоступной публикацией, это также поможет в отладке проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^