LWP :: UserAgent для отправки XML на защищенный сервер ... выпуск сертификата - PullRequest
2 голосов
/ 25 января 2012

Я использую LWP :: UserAgent для отправки POST-данных XML на удаленный сервер.Удаленный URL-адрес - https, и мне прислали файл .crt для установки на моем сервере.

Когда я пытаюсь подключиться к их серверу, я получаю следующее сообщение:

Произошла ошибка

500 Не удается подключиться к previewtest.clverify.com:443 (проверка сертификата не удалась) 500 Не удается подключиться к previewtest.clverify.com:443 (проверка сертификата не удалась) Тип содержимого: текст/ plain Клиент-Дата: среда, 25 января 2012 05:11:24 GMT Client-Warning: внутренний ответ Не удается подключиться к previewtest.clverify.com:443 (проверка сертификата не удалась) LWP :: Protocol :: https :: Socket: Попытка подключения SSL завершилась с неизвестной ошибкой: 14090086: Подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата в /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm строка 51.

Как мне соответствующим образом ссылаться на SSL-сертификат на моем сервере и отправлять его своим?

Вот код:

sub ConsumerInfo {
my $cid = shift;

my $response = undef;
my $sendXML = &Create_ConsumerInfo_Request($cid);
if ($sendXML) {
    &DoXMLUpload($sendXML);

    my $browser = LWP::UserAgent->new(agent => 'perl post');
    $browser->credentials('sumURL:443','sumRealm','sumUserID'=>'sumPassword');
    $response = $browser->request(POST 'sumFullURL',
        Content_Type => 'text/xml',
        Content => $sendXML);
    print "Content-type:text/html\n\n";
    print $response->error_as_HTML unless $response->is_success;
    print $response->as_string;
} else {
    &ErrorMsg("No XML Code Was Found.");
    exit;   
}
# ===============================================================
# Need to insert parser in here to convert this into an array.
# ===============================================================
return $response;
}

Теперь ... допустим, что сертификаты, которые былиотправленные мне находятся по адресу / usr / bin / some_dir / DigiCertCA.crt.

Как настроить этот параметр для проверки моих сертификатов при вызове сервера?

1 Ответ

1 голос
/ 25 января 2012

Сначала я бы попробовал изменить строку my $browser на:

my $browser = LWP::UserAgent->new(
  agent => 'perl post',
  ssl_opts => {
    verify_hostname => 1,
    SSL_ca_path => '/usr/bin/some_dir',
  },
);
...