Hello,

when I try SSL access over a proxy, I get the following error message
from the proxy:


   Unable to service this URL without parent cache.Contact your system
   administrator.


Here is what I try to do:


   #! /usr/bin/perl
   
   use strict;
   use warnings;
   
   my $conf = {
       proxy      => "http://proxy.domain.de:81";,
       proxy_user => "proxyuser",
       proxy_pass => "proxysecret",
       "ssl-authority-files" => "/etc/ssl/root.pem",
   
       noproxy    => "localhost,localdomain",
       user       => "user",
       pass       => "secret",
   };
   
   {
       use LWP::UserAgent;
       use LWP::Debug("+", "+conns");
       package EditSslAgent;
   
       { no strict; @ISA = qw(LWP::UserAgent); }
   
       sub get_basic_credentials {
           my ($self, $realm, $uri, $isproxy) = @_;
           my ($user, $pass);
           my $myrealm = sprintf ("<%s://%s> %s",
                                  $uri->scheme(),
                                  $uri->host_port(),
                                  $realm);
   
           print "request credentials $myrealm $isproxy\n";
   
           if ($isproxy) {
               $user = $conf->{"proxy_user"};
               $pass = $conf->{"proxy_pass"};
           } else {
               $user = $conf->{"user"};
               $pass = $conf->{"pass"};
           }
   
           return () unless defined $user && defined $pass;
   
           print "provide credentials for $user\n";
   
           return ($user, $pass);
       }
   }
   
   $ENV{HTTPS_DEBUG}   = 1;
   $ENV{HTTPS_CA_FILE} = $conf->{"ssl-authority-files"};
   $ENV{https_proxy}   = $conf->{proxy};
   $ENV{http_proxy}    = $conf->{proxy};
   $ENV{ftp_proxy}     = $conf->{proxy};
   $ENV{wais_proxy}    = $conf->{proxy};
   $ENV{gopher_proxy}  = $conf->{proxy};
   $ENV{no_proxy}      = $conf->{noproxy};
   
   my $ua = new EditSslAgent (agent=>"Netscape/2.1");
   $ua->env_proxy;
   my $resp = $ua->get("https://google.de/foo/bar";);
   print $resp->as_string;


And here is the debug output:


   LWP::UserAgent::new: ()
   LWP::UserAgent::proxy: https http://proxy.domain.de:81
   LWP::UserAgent::proxy: gopher http://proxy.domain.de:81
   LWP::UserAgent::proxy: http http://proxy.domain.de:81
   LWP::UserAgent::proxy: ftp http://proxy.domain.de:81
   LWP::UserAgent::proxy: wais http://proxy.domain.de:81
   LWP::UserAgent::request: ()
   LWP::UserAgent::send_request: GET https://google.de/foo/bar
   LWP::UserAgent::_need_proxy: Proxied to http://proxy.domain.de:81
   LWP::Protocol::http::request: ()
   LWP::Protocol::collect: read 460 bytes
   LWP::UserAgent::request: Simple response: Internal Server Error
   HTTP/1.1 500 Server Error
   Connection: close
   Date: Mon, 24 Apr 2008 01:22:15 GMT
   Server: NetCache appliance (NetApp/6.0.6)
   Content-Length: 460
   Content-Type: text/html
   Client-Date: Mon, 24 Apr 2008 01:23:00 GMT
   Client-Peer: 192.168.1.28:81
   Client-Response-Num: 1
   Title: 500 Server Error
   
   <HTML>
   <HEAD><TITLE>500 Server Error</TITLE></HEAD>
   <BODY>
   <H1>Server Error</H1>
   <H4>
   The following error occurred:<P>
   [code=PARENT_NEEDED] Unable to service this URL without parent cache.Contact 
your system administrator.
   </H4>
   <HR>
   Please contact the administrator.
   Generated by proxy in domain
   <p>
    <td><font face="Arial,Helvetica"><font size="-2"> F proxy
     U: proxyuser IP: 192.168.1.12 https://google.de/foo/bar
       </font></font></td>
   </BODY>
   </HTML>


It looks like LWP does a GET request to the proxy instead of a
CONNECT request.

Any ideas what is going wrong here?

Reply via email to