Ychwanegu TLS ar ôl i Perl agor y cysylltiad SOCKS
Haenwch IO::Socket::SSL dros gysylltiad IO::Socket::Socks a gwirio enw gwesteiwr y gyrchfan.
Mae gan y cysylltiad SOCKS a'r cysylltiad TLS wahanol waith. Yn gyntaf, cael ffrwd beitiau i'r gyrchfan drwy SOCKS. Yna cychwyn TLS dros y ffrwd honno, gan nodi gwefan y gyrchfan yn hytrach na'r procsi.
Ar gyfer pen draw TLS o fath HTTPS, gall y drefniant fod:
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();
Ar gyfer targed HTTPS cyhoeddus ar lwybr procsi cyhoeddus a ganiateir, mae'r rhestr procsi SOCKS5 yn cynnig ymgeiswyr ar gyfer ProxyAddr a ProxyPort. Mae'r darn yn sefydlu'r haenau cludiant; rhaid i'r cymhwysiad barhau i anfon y protocol y mae'r gyrchfan yn ei ddisgwyl a chau'r soced pan fydd wedi gorffen.
Cadw'r enw cymar a fwriadwyd
Mae pen draw'r procsi yn perthyn i'r cysylltiad cyntaf. Mae SNI TLS a gwirio enw gwesteiwr yn ymwneud â example.com. Gall defnyddio enw gwesteiwr y procsi ar y cyfnod hwnnw ofyn am neu wirio hunaniaeth anghywir.
Mae ffurfweddu'r storfa ymddiriedaeth yn ofyniad annibynnol arall. Defnyddiwch ffurfwedd CA arfaethedig y cymhwysiad yn lle callback sy'n ymddiried yn popeth, wedi'i gopïo o enghraifft ddiagnostig.
Os bydd cam SOCKS yn methu, ni fydd newid paramedrau TLS yn ei drwsio. Os bydd SOCKS yn llwyddo ac TLS yn methu, cadwch y gwall tystysgrif ac enw gwesteiwr fel tystiolaeth yn lle ei drin fel methiant procsi cyffredinol.
Mae enwau'r modiwlau hefyd yn bwysig: mae IO::Socket::Socks ac IO::Socket::SSL yn cynnig adeiladwyr ac ymddygiad uwchraddio gwahanol. Nid yw soced TCP crai sydd ond wedi cyrraedd y procsi wedi cwblhau trafodaeth cyrchfan SOCKS eto.