HTTPS Proxy и LWP :: UserAgent

Я прочитал несколько тем на нескольких сайтах и до сих пор не могу сделать эту работу.

У меня есть клиентский компьютер (OSX) с OpenSSL 0.9.8r под управлением Perl 5.12.4, с LWP 6.0.4, обновленными Crypt :: SSLeay, Net :: SSL и т. Д. Я пытаюсь подключиться к сайту HTTPS (https://github.com в примере) через прокси WinGate, который у меня работает на виртуальной машине Windows. Обратите внимание, что мое настоящее приложение подключается к веб-сервису SSL, который я не могу контролировать.

От Firefox, указал на прокси, все копацетно. Страница загружается успешно, и я вижу соединения в мониторе активности ПО Proxy. Я был бы проклят, если смогу заставить это работать в Perl. Я начал с кода из этого вопроса о переполнении стека:Как заставить LWP использовать Crypt :: SSLeay для HTTPS-запросов? И добавил некоторую отладку и дополнительный вывод. Вот где я стою сейчас:

#!/usr/bin/perl

use strict;
use warnings;
use Net::SSL (); # From Crypt-SSLeay

BEGIN {
  $Net::HTTPS::HTTPS_SSL_SOCKET_CLASS = "Net::SSL"; # Force use of Net::SSL
  $ENV{HTTPS_PROXY} = 'https://192.168.1.11:80';
#  $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
  $ENV{HTTPS_DEBUG} = 1;  #Add debug output
}

use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new('GET','https://github.com/');
my $response = $ua->request($req);

print "--\n";
print "$_\n" for grep { $_ =~ /SSL/ } keys %INC;
print "--\n";

if ($response->is_success) {
     print $response->decoded_content;  # or whatever
     exit(0);
}
else {
 print "\nFail:\n";
     print $response->status_line ."\n";
     exit(1);
}

Вот результат этого кода:

--
Crypt/SSLeay.pm
Crypt/SSLeay/X509.pm
Net/SSL.pm
--

Fail:
500 Can't connect to github.com:443 (Crypt-SSLeay can't verify hostnames)

Если я тогда раскомментирую$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;Я вижу одно соединение с github.com:443 на прокси, а затем ничего.(Note it works great from a web browser through the proxy), После долгих зависаний я получаю следующий вывод из скрипта:

SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:failed in SSLv3 read server hello A
SSL_connect:before/connect initialization
SSL_connect:SSLv2 write client hello A
SSL_connect:failed in SSLv2 read server hello A
--
Crypt/SSLeay.pm
Crypt/SSLeay/X509.pm
Net/SSL.pm
Crypt/SSLeay/CTX.pm
Crypt/SSLeay/MainContext.pm
--

Fail:
500 SSL negotiation failed: 

Если кто-то может дать здесь какое-то направление, я был бы очень признателен!

Ответы на вопрос(8)

Ваш ответ на вопрос