Crypt::SSLeay and HTTPS_PROXY Problem
Posted on 2012-09-19 06:09:26.512359-07 by ulmi
After upgrading an Ubuntu system from 10.04 to 12.04 I can no longer get the HTTPS_PROXY option from Crypt::SSLeay (via LWP::UserAgent) to work. I have the following example script, which works in 10.04:
#!/usr/bin/perl use warnings; use strict; use WWW::Mechanize; use Data::Dumper; use Net::SSL; BEGIN { $Net::HTTPS::SSL_SOCKET_CLASS = "Net::SSL"; # Force use of Net::SSL } my $ua = WWW::Mechanize->new( autocheck => 0,); $ENV{'HTTPS_PROXY'} = 'http://10.8.0.194:8080'; $ua->ssl_opts( verify_hostname => 0 ); my $response = $ua->get('https://10.8.142.7');
On a stock ubuntu 12.04 this script fails with:
$VAR1 = 'read failed: at /usr/share/perl5/Net/HTTP/Methods.pm line 256 at /usr/lib/perl5/Net/SSL.pm line 210 Net::SSL::die_with_error(\'LWP::Protocol::https::Socket=GLOB(0x13ce178)\', \'read failed\') called at /usr/lib/perl5/Net/SSL.pm line 223 Net::SSL::read(\'LWP::Protocol::https::Socket=GLOB(0x13ce178)\', \'\', 1024, 0) called at /usr/share/perl5/Net/HTTP/Methods.pm line 256 Net::HTTP::Methods::my_readline(\'LWP::Protocol::https::Socket=GLOB(0x13ce178)\', \'Status\') called at /usr/share/perl5/Net/HTTP/Methods.pm line 343 Net::HTTP::Methods::read_response_headers(\'LWP::Protocol::https::Socket=GLOB(0x13ce178)\', \'laxed\', 1, \'junk_out\', \'ARRAY(0x13a5d78)\') called at /usr/share/perl5/LWP/Protocol/http.pm line 378 LWP::Protocol::http::request(\'LWP::Protocol::https=HASH(0x1379f70)\', \'HTTP::Request=HASH(0x13460a8)\', undef, undef, undef, 180) called at /usr/share/perl5/LWP/UserAgent.pm line 192 eval {...} called at /usr/share/perl5/LWP/UserAgent.pm line 191 LWP::UserAgent::send_request(\'WWW::Mechanize=HASH(0x12505d0)\', \'HTTP::Request=HASH(0x13460a8)\', undef, undef) called at /usr/share/perl5/LWP/UserAgent.pm line 274 LWP::UserAgent::simple_request(\'WWW::Mechanize=HASH(0x12505d0)\', \'HTTP::Request=HASH(0x13460a8)\', undef, undef) called at /usr/share/perl5/LWP/UserAgent.pm line 282 LWP::UserAgent::request(\'WWW::Mechanize=HASH(0x12505d0)\', \'HTTP::Request=HASH(0x13460a8)\') called at /usr/share/perl5/WWW/Mechanize.pm line 2503 WWW::Mechanize::_make_request(\'WWW::Mechanize=HASH(0x12505d0)\', \'HTTP::Request=HASH(0x13460a8)\') called at /usr/share/perl5/WWW/Mechanize.pm line 2217 WWW::Mechanize::request(\'WWW::Mechanize=HASH(0x12505d0)\', \'HTTP::Request=HASH(0x13460a8)\') called at /usr/share/perl5/LWP/UserAgent.pm line 410 LWP::UserAgent::get(\'WWW::Mechanize=HASH(0x12505d0)\', \'https://10.8.142.7\') called at /usr/share/perl5/WWW/Mechanize.pm line 407 WWW::Mechanize::get(\'WWW::Mechanize=HASH(0x12505d0)\', \'https://10.8.142.7\') called at ./ssl.pl line 27
I then tried upgrading Crypt::SSleay via cpanm to version 0.64. After upgrading my little script just blocks forever. Strace shows a blocking 'read(3,'. A tcpdump shows that the proxy server sends the correct '200 Connection established' response, but that the Client then does nothing (it should start the SSL 'handshake'):
00000000 43 4f 4e 4e 45 43 54 20 31 30 2e 38 2e 31 34 32 CONNECT 10.8.142 00000010 2e 37 3a 34 34 33 20 48 54 54 50 2f 31 2e 30 0d .7:443 H TTP/1.0. 00000020 0a 0d 0a ... 00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 43 6f 6e HTTP/1.1 200 Con 00000010 6e 65 63 74 69 6f 6e 20 65 73 74 61 62 6c 69 73 nection establis 00000020 68 65 64 0d 0a 41 63 63 65 70 74 2d 52 61 6e 67 hed..Acc ept-Rang 00000030 65 73 3a 20 6e 6f 6e 65 0d 0a 43 6f 6e 6e 65 63 es: none ..Connec 00000040 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d 0a tion: cl ose....
The versions of some possibly relevant CPAN packages are:
Net::SSL: 2.85 Crypt::SSLeay: 0.64 Net::SSLeay: 1.42 LWP::UserAgent: 6.03 WWW::Mechanize: 1.71 IO::Socket::SSL: 1.53
Can anyone help me out with either one of these two problems? I've pretty much run out of ideas; even just some hints on where I could debug further would be great.
Posted on 2012-09-28 08:01:54.837295-07 by ulmi in response to 13808
I was able to resolve my first problem by upgrading Net::HTTP to 6.03 (fixes this bug: https://rt.cpan.org/Public/Bug/Display.html?id=72790 ). As far as I can tell the second one seems to be a problem / bug in newer versions of Crypt::SSLeay.
(This article is based on a thread on the CPAN::Forum.)
Published on 2012-09-19