3

Я только что обновился до Debian Wheezy от Lenny (длинная история), и некоторые из моих пакетов Perl не были обновлены по какой-то причине, среди них Crypt::SSLeay (libcrypt-ssleay-perl).

Мне не удалось подключиться к своему платежному шлюзу с помощью кредитной карты с помощью LWP, пока я не установил libcrypt-ssleay-perl, и теперь он "работает", но для установления SSL-соединения требуется 15-20 секунд из-за ошибки "очень бесполезная ошибка" в неизвестном состоянии ":

SSL_connect: до / подключить инициализацию
SSL_connect: неизвестное состояние
(ожидание 15-20 секунд ...)# этот комментарий от waldo22
SSL_connect: ошибка в неизвестном состоянии
SSL_connect: до / подключить инициализацию
SSL_connect: клиент записи SSLv3 привет A
SSL_connect: сервер чтения SSLv3 привет A
SSL_connect: SSLv3 читает сертификат сервера A
SSL_connect: сервер чтения SSLv3 выполнен A
SSL_connect: обмен ключами клиента записи SSLv3 A
SSL_connect: спецификация шифра изменения записи SSLv3
SSL_connect: запись SSLv3 завершена A
SSL_connect: сброс данных SSLv3
SSL_connect: чтение SSLv3 завершено A

У меня такое ощущение, что это как-то связано с тем, что LWP изменяет поведение по умолчанию для центров сертификации и проверки сертификатов сервера:
https://stackoverflow.com/questions/74358/how-can-i-get-lwp-to-validate-ssl-server-certificates#5329129
и возможно:
https://stackoverflow.com/questions/5639803/aws-ses-certificate-verify-failed

Мой модуль Perl использует Crypt::SSLeay через LWP::useragent.

Очевидно, 15-20 секунд - это слишком долго, чтобы ждать установления SSL-соединения, но без более полезного сообщения об ошибке я не знаю, что делать.

Кто-нибудь есть какие-либо предложения о том, как лучше отладить это или получить более подробный вывод?

Огромное спасибо,

-Wes

1 ответ1

1

Вау, этот был чокнутым.

Кажется, есть проблема с OpenSSL 1.0.1, где попытка автоматического согласования с TLS1.1 (или 1.2???) на некоторых серверах (редактирование: на серверах BigIP с прошивкой <10.2.4) эти серверы сбрасывают соединение и отклоняют запрос. Увидеть:

https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452

Я пытаюсь подключиться к шлюзу кредитных карт Paypal "Payflow Pro", и PayPal изначально был одним из главных виновников в списке.

Согласно сообщению об ошибке, они говорят, что это "исправлено" для Paypal в 1.0.1b, но я использую 1.0.1c-3 и все еще испытываю проблему. Я не знаю, означает ли это, что это исправлено для www.paypal.com но не для payflowpro.paypal.com , или как.

ВОЗМОЖНОЕ РЕШЕНИЕ: установка $ENV{HTTPS_VERSION} = 3 для принудительного использования SSL3, похоже, решает проблему, по крайней мере, для Crypt:: SSLeay.

Предположительно это работает, потому что он не пытается согласовать TLS1.1, а просто использует SSL3.

Тестируя с openssl s_client, он работает с опциями -ssl3 , -tls1 и -no_tls1 , поэтому, на мой взгляд, это должно быть проблемой согласования.

Во всяком случае, это обходной путь, по крайней мере.

Актуальная проблема вызвана ошибкой в прошивке балансировщиков нагрузки F5 BigIP с прошивкой менее 10.2.4. Это приводит к тому, что соединения TLS 1.1 или 1.2 не отвечают должным образом на длинные запросы ClientHello и, таким образом, зависают.

Реальное исправление состоит в том, чтобы обновить прошивку на балансировщике нагрузки BigIP до> = 10.2.4.

Конечно, Paypal/Payflow обвиняют OpenSSL в этом ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .