Afegiu TLS després que Perl hagi obert la connexió SOCKS
Superposeu IO::Socket::SSL sobre una connexió IO::Socket::Socks i verifiqueu el nom d'amfitrió de destinació.
La connexió SOCKS i la connexió TLS fan feines diferents. Primer obteniu un flux de bytes cap a la destinació mitjançant SOCKS. Després inicieu TLS sobre aquest flux, identificant el lloc web de destinació i no el proxy.
Per a un punt final TLS d'estil HTTPS, la disposició pot ser:
use IO::Socket::Socks;
use IO::Socket::SSL;
my $target = 'example.com';
my $socket = IO::Socket::Socks->new(
SocksVersion => 5,
ProxyAddr => '127.0.0.1',
ProxyPort => 1080,
ConnectAddr => $target,
ConnectPort => 443,
) or die $!;
IO::Socket::SSL->start_SSL(
$socket,
SSL_hostname => $target,
SSL_verifycn_name => $target,
SSL_verifycn_scheme => 'http',
SSL_verify_mode => SSL_VERIFY_PEER,
) or die IO::Socket::SSL::errstr();
Per a un objectiu HTTPS públic en una ruta de proxy públic permesa, la llista de proxys SOCKS5 ofereix candidats per a ProxyAddr i ProxyPort. El fragment estableix les capes de transport; l'aplicació encara ha d'enviar el protocol que espera la destinació i tancar el sòcol en acabar.
Conserveu el nom d'igual previst
El punt final del proxy pertany a la primera connexió. L'SNI de TLS i la verificació del nom d'amfitrió fan referència a example.com. Fer servir el nom d'amfitrió del proxy en aquesta etapa pot sol·licitar o verificar una identitat equivocada.
La configuració del magatzem de confiança és un altre requisit independent. Utilitzeu la configuració de CA prevista per l'aplicació en lloc d'una devolució de trucada que confia en tot, copiada d'un exemple de diagnòstic.
Si el pas SOCKS falla, canviar paràmetres TLS no ho arreglarà. Si SOCKS té èxit i TLS falla, conserveu l'error de certificat i de nom d'amfitrió com a evidència en lloc de tractar-lo com una caiguda genèrica del proxy.
Els noms dels mòduls també importen: IO::Socket::Socks i IO::Socket::SSL exposen constructors i comportament d'actualització diferents. Un sòcol TCP cru que només ha arribat al proxy encara no ha completat la negociació de destinació SOCKS.