
Net::Proxy::Connector::connect_ssl - Create SSL/CONNECT tunnels through HTTP proxies

# sample proxy using Net::Proxy::Connector::tcp
# and Net::Proxy::Connector::connect_ssl
use Net::Proxy;
# listen on localhost:6789
# and proxy to remotehost:9876 through proxy.company.com:8080
# using the given credentials
my $proxy = Net::Proxy->new(
in => { type => 'tcp', port => '6789' },
out => {
type => 'connect_ssl',
host => 'remotehost',
port => '9876',
proxy_host => 'proxy.company.com',
proxy_port => '8080',
proxy_user => 'jrandom',
proxy_pass => 's3kr3t',
proxy_agent => 'Mozilla/4.04 (X11; I; SunOS 5.4 sun4m)',
},
);
$proxy->register();
Net::Proxy->mainloop();

Net::Proxy::Connecter::connect_ssl is a Net::Proxy::Connector that uses the HTTP CONNECT method to ask the proxy to create a tunnel to an outside server. The data is then encrypted using SSL.
Obviously, you'll need a server that understands SSL (or a proxy using Net::Proxy::Connector::ssl) at the other end.
This connector is only an "out" connector.
In addition to the options listed below, this connector accepts all SSL_... options to IO::Socket::SSL. They are transparently passed through to the appropriate IO::Socket::SSL methods when upgrading the socket to SSL.

Net::Proxy::Connector::connect accepts the following options:
out 
The destination host.
The destination port.
The web proxy name or address.
The web proxy port.
The authentication username for the proxy.
The authentication password for the proxy.
The user-agent string to use when connecting to the proxy.

Philippe 'BooK' Bruhat, <book@cpan.org>.

Because Net::Proxy blocks when it tries to connect to itself, it wasn't possible to pass an SSL-encrypted connection through a proxy with a single script: you needed one for the SSL encapsulation, and another one for bypassing the proxy with the CONNECT HTTP method.
See Net::Proxy::Connector::connect and Net::Proxy::Connector::ssl for details.

Copyright 2007 Philippe 'BooK' Bruhat, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.