Проект взаимодействует с внешними сервисами по HTTPS через прокси, в том числе с аутентификацией по базовым сертификатам. В качестве агента используется LWP, SSL реализует модуль Crypt::SSLeay (Net::SSL). Один из внешних сервисов отключил поддержку SSL и перешел на TLS 1.2, который не поддерживается в Crypt::SSLeay. Необходимо в коннекторе с указанным сервисом внедрить использование IO::Socket::SSL таким образом, чтоб все остальные коннекторы продолжили использовать Crypt::SSLeay. Изменения необходимо вносить в клиент (test.pl), правка коннекторов не допускается. В течение одного запроса с помощью use в произвольном порядке подключаются несколько коннекторов. Во вложении пример, который необходимо сделать рабочим. В полной кодовой базе могут присутствовать десятки вызовов ->connect, соответственно решение, в котором каждый отдельный вызов вручную оборачивается в какой-то блок кода, не подойдёт - часть теста, начиная с первого комментария "# Сервер поддерживает..." и до конца, должна остаться неизменённой.
Crypt-SSLeay собран на базе openssl 0.9.8, который не поддерживает TLS.
ldd Crypt/SSLeay/SSLeay.so linux-vdso.so.1 => (0x00007fff66f4a000) libssl.so.0.9.8 => /lib/libssl.so.0.9.8 (0x00007f86f50bc000) libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x00007f86f4d2b000) libz.so.1 => /lib/libz.so.1 (0x00007f86f4b13000) libc.so.6 => /lib/libc.so.6 (0x00007f86f478a000) libdl.so.2 => /lib/libdl.so.2 (0x00007f86f4586000) /lib64/ld-linux-x86-64.so.2 (0x00007f86f5523000)
Для воспроизведения и решения проблемы рекомендуется развернуть чистую виртуальную машину на Ubuntu 10.04.
-
По первому заданию много вопросов, но поскольку "Консультации по тест-заданию не предусмотрены." все это немного странно. у меня 2 вопроса: почему не использовать везде IO::Socket::SSL ? Почему нельзя поправить коннектор ? Еще знаю пару вариантов как подкостылить, помимо этого: 1. Net::SSLGlue, 2. через Module::Reload::Selective
-
этот веселый г....код во втором задании вообще впечатлил. Его не рефакторить надо, а переписывать вместе с тестами, причесал как мог.