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?