Страница 1 из 1

Запрос по https ssl на сервер

Добавлено: 26 авг 2020, 16:26
shishkov
Запрос по https от perl 5.20.1 не проходит на локальный сервер под openserver
Код 500
SSL connect attempt failed error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure at LWP/Protocol/http.pm line 50.


Если любой сервер извне: ya.ru, google.com или локальный сервер через протокол http - работает.
Браузер Chrome - запрос по безопасному протоколу успешно.

Советуют отключать верификацию, но не работает ни
$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'}=0;
ни
$ua->ssl_opts(verify_hostnames =>0);
$ua->ssl_opts(SSL_verify_mode =>0x00);  

Код такой:
use strict;
use warnings;

use LWP::UserAgent;
use Mozilla::CA;
my $ua = LWP::UserAgent->new() or die;
my $url = 'https://localhost/';
my $res = $ua->get($url);
print $res->code . "\n";

exit;

Проверил
curl "https://localhost" не работает
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - Функция отзыва не смогла произвести проверку отзыва для сертификата.
,
curl "https://localhost" --ssl-no-revoke - всё нормально, т.е.

Re: Запрос по https ssl на сервер

Добавлено: 26 авг 2020, 22:53
Максим
Он и не пройдёт, не пытайтесь. sslv3 помер давно, как небезопасный. Используйте TLS1.2 или новее. Как это в Perl делается понятия не имею, но google говорит что примерно так:
use LWP::UserAgent;

my $ua = LWP::UserAgent->new(
    ssl_opts => {
            SSL_version => 'TLSv12:!SSLv2:!SSLv3:!TLSv1:!TLSv11',
    }
);
$ua->timeout(30);
my $response = $ua->get('https://www.example.com/');