Пытаюсь отправить POST запрос на сервер по https с помощью LWP.
Вот код: #!/usr/bin/perl
use LWP::UserAgent;
use LWP::Debug qw(+);
use IO::Socket::SSL qw(debug3);
my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");
$ua->ssl_opts(
SSL_ca_file => '/home/newdeveloper/certs/ca-crt.pem',
);
my $req = HTTP::Request->new(POST => 'www.server/path');
$req->content_type('application/x-www-form-urlencoded');
$req->content('query=libwww-perl&mode=dist');
my $res = $ua->request($req);
print $res->headers_as_string;
# Check the outcome of the response
if ($res->is_success) {
print $res->content;
}
else {
print $res->status_line, "\nerror\n";
}
Вот результат: DEBUG: .../IO/Socket/SSL.pm:1482: new ctx 460343328
DEBUG: .../IO/Socket/SSL.pm:334: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:336: socket connected
DEBUG: .../IO/Socket/SSL.pm:349: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:1470: ok=0 cert=460964448
DEBUG: .../IO/Socket/SSL.pm:392: Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:1213: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
попробовал браузер выдаёт сообщение «This Connection is Untrusted».
Но если добавить исключение в браузере на www.server.ru/path, будет всё работать.
Но если сертификат из браузера экспортировать, потом удалить из браузера, потом импортировать в браузер.
браузер всё равно выдаёт сообщение «This Connection is Untrusted».
я пробовал в качестве сертификата подставлять и этот импортированный из браузера сертификат.
я бы для начала попробовал на каком-нибудь не самоподписном сертификате. Я думаю дело IO::Socket::SSL работает корректно, просто что-то не так с сертификатом.