Додајте TLS откако Perl ќе го отвори SOCKS поврзувањето
Поставете IO::Socket::SSL врз IO::Socket::Socks поврзување и проверете го името на домаќинот на одредиштето.
SOCKS поврзувањето и TLS поврзувањето имаат различни задачи. Прво добијте бајтен тек до одредиштето преку SOCKS. Потоа започнете TLS врз тој тек, идентификувајќи ја целната веб-страница, а не проксито.
За TLS крајна точка од типот HTTPS, распоредот може да биде:
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();
За јавен HTTPS цел на дозволена рута на јавно прокси списокот на SOCKS5 проксија нуди кандидати за ProxyAddr и ProxyPort. Фрагментот ги поставува транспортните слоеви; апликацијата сепак мора да го испрати протоколот што го очекува одредиштето и да го затвори сокетот кога ќе заврши.
Задржете го предвиденото име на партнерот
Крајната точка на проксито ѝ припаѓа на првата врска. TLS SNI и проверката на името на домаќинот се однесуваат на example.com. Користењето на името на домаќинот на проксито во таа фаза може да побара или провери погрешен идентитет.
Конфигурацијата на складиштето за доверба е уште еден независен услов. Користете ја предвидената CA конфигурација на апликацијата наместо повратен повик што верува на сè, копиран од дијагностички пример.
Ако чекорот SOCKS не успее, менувањето на TLS параметрите нема да го поправи. Ако SOCKS успее, а TLS не успее, зачувајте ја грешката со сертификатот и името на домаќинот како доказ наместо да ја третирате како општ прекин на проксито.
Имињата на модулите исто така се важни: IO::Socket::Socks и IO::Socket::SSL нудат различни конструктори и однесување при надградба. Суров TCP сокет што само стигнал до проксито сè уште не го завршил договарањето на SOCKS одредиштето.