LWP :: UserAgent для XML POST на сервер HTTPS не работает

Хорошо ... давайте посмотрим, станет ли это яснее.

Я выполняю POST XML-документа через LWP :: UserAgent на удаленный сторонний сервер.

Они ранее прислали мне свои файлы .crt, которые я установил на своем сервере, и проверили их адрес и факт их существования через CPanel и через вызовы командной строки Putty для поиска. Сертификаты есть.

Я убедился, что у меня установлен LWP :: Protocol :: https и все другие необходимые моды Perl, включая Mozilla :: CA, Crypt :: SSLeay и другие.

Когда я запускаю скрипт, я получаю следующую ошибку:

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

500 Не удается подключиться к shortURL: порт (ошибка проверки сертификата) 500 Не удается подключиться к shortURL: port (ошибка проверки сертификата) Content-Type: text / plain Дата клиента: среда, 25 января 2012 г. 17:53:36 GMT Предупреждение клиента: внутренний ответ Не удается подключиться к shortURL: порт (не удалось проверить сертификат) LWP :: Protocol :: https :: Socket: попытка подключения SSL завершилась неудачно с неизвестной ошибкой: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не удалась в / usr / lib / perl5 / site_perl / 5.8.8 / LWP / Protocol / http.pm, строка 51.

Вот код вызова:

sub ConsumerInfo {
my $cid = shift;

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

    my $browser = LWP::UserAgent->new(agent => 'site_perl',
        ssl_opts => {
            verify_hostname => 1,
            SSL_ca_path => '/home/<mysite>/ssl/certs/',
        },);
    $browser->credentials('shortURL:port','realm','username'=>'password');
    $response = $browser->request(POST 'longURL',
        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;
}

Есть предположения? Здесь у меня заканчиваются идеи. :(


person D. Lawrence Barksdale    schedule 25.01.2012    source источник
comment
Вы действительно пытаетесь подключиться к shortURL:port?   -  person Sinan Ünür    schedule 25.01.2012
comment
Это значения, заменяющие фактический сетевой адрес: номер порта. Фактические значения больше похожи на somedomain.com:443.   -  person D. Lawrence Barksdale    schedule 25.01.2012


Ответы (1)


rm -f /home/site/ssl/certs/*

wget --no-check-certificate \
             -O /home/site/ssl/certs/DigiCertHighAssuranceCA-3.crt.pem \
    https://www.digicert.com/CACerts/DigiCertHighAssuranceCA-3.crt

wget --no-check-certificate \
              -O /home/site/ssl/certs/DigiCertHighAssuranceEVRootCA.crt.pem \
    https://www.digicert.com/testroot/DigiCertHighAssuranceEVRootCA.crt

c_rehash /home/site/ssl/certs/

echo -n | openssl s_client -connect previewtest.clverify.com:443 -CApath /home/site/ssl/certs

В третьей последней строке написано: Проверить код возврата: 0 (нормально).

echo -n | HTTPS_CA_DIR=/home/site/ssl/certs lwp-request -m POST https://previewtest.clverify.com/webservice/exec

Теперь ответ проходит за этапом шифрования и возвращает сообщение об ошибке Tomcat.

Код Perl с LWP и SSL_ca_path, как показано, тоже работает, по крайней мере, криптографическая часть.


Общий совет: сядьте с документами OpenSSL и, возможно, с одной или двумя соответствующими книгами, и выполните тщательный RTFM, чтобы изучить основные концепции. Если вы просто продолжите и реализуете это, не понимая, что это на самом деле делает, то однажды кто-то MITM отправит ваши передачи, и вы даже не заметите, что что-то не так, и тогда на кону будет ваша голова.

person daxim    schedule 26.01.2012
comment
RTFM? MITM? Простите за незнание. Ты прав ... Мне нужно поближе познакомиться с этим. Впервые за 16 лет я сделал XML для безопасного сайта. Я знаю, что это неприятно, но не могли бы вы объяснить мне, что вы написали? Я понятия не имею, что такое сообщение об ошибке Tomcat. Вы консультируете ежечасно? - person D. Lawrence Barksdale; 26.01.2012
comment
Не обращайте внимания на объяснения RTFM и MITM. Понятно. Мне очень жаль, что я побеспокоил тебя, но я действительно не думал, что грубость была необходима. - person D. Lawrence Barksdale; 26.01.2012