Как сделать небезопасное SSL-соединение в REST :: Client perl - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь скопировать мою команду curl в вызов REST :: Client API.

Команда curl: curl -i --insecure -X POST -u username:password https://url

Обратите внимание на --insecure

по какой-то причине вызов API должен быть таким, как при использовании curl.

Поэтому я должен повторить это с помощью REST :: Client вызов API

Ответы [ 2 ]

3 голосов
/ 07 января 2020

Я не пробовал, но прочитав документацию , можно использовать REST :: Client с существующим LWP :: UserAgent объектом. Тогда это будет выглядеть примерно так:

use LWP::UserAgent;
use REST::Client;

my $ua = LWP::UserAgent->new;
$ua->ssl_opts(SSL_verify_mode => 0); # maybe need verify_hostname => 0 too
REST::Client->new(useragent => $ua)

Обратите внимание, что отключить проверку сертификата с помощью ssl_opts может быть непросто, поскольку в зависимости от используемой версии LWP :: UserAgent и исправлений, добавленных дистрибутивом, он будет переопределен опции из IO :: Socket :: SSL интересным образом.

Обратите также внимание на то, что отключение проверки сертификата, в первую очередь, очень плохая идея, так как делает человека в середине атаки необнаружимым, Вместо этого рекомендуется указать центр сертификации, используемый для выдачи сертификата сервера, с помощью SSL_ca_file и при необходимости указать имя хоста, которое следует использовать для проверки с помощью SSL_verifycn_name . В качестве альтернативы вы можете указать ожидаемый сертификат с помощью SSL_fingerprint .

0 голосов
/ 07 января 2020

Я использовал пример badssl.com, который вам нужно обновить:

#!/usr/bin/perl -w
use strict;
use REST::Client;
my $client = REST::Client->new();
$client->getUseragent()->ssl_opts(verify_hostname => 0); # --insecure
$client->getUseragent()->credentials("expired.badssl.com", "", "username", "password"); # -u
$client->POST("https://expired.badssl.com/"); # -X
print $client->responseContent(); # Print the response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...