On Wed, Apr 30, 2008 at 09:14:19PM +0200, Josef Wolf wrote:

Are there really no ideas what goes wrong here?

> 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