Um servidor Squid configurado como proxy de encaminhamento é capaz de receber solicitações HTTP simples de clientes e encaminhar solicitações HTTPS para servidores upstream de forma transparente. No entanto, é necessário um programa de reescrita de URL externo.
Escreva o seguinte programa de regravação de URL em /etc/squid/urlrewrite.pl
:
#!/usr/bin/perl
select(STDOUT);
$| = 1;
while (<>) {
if (/^(|\d+\s+)((\w+):\/+)([^\/:]+)(|:(\d+))(|\/\S*)(|\s.*)$/) {
my $channel = $1;
my $protocolClean = $3;
my $domain = $4;
my $port = $5;
my $portClean = $6;
my $urlPath = $7;
if ($protocolClean eq 'http' && ($port eq '' || $portClean eq '80')) {
print STDOUT "${channel}OK rewrite-url=\"https://${domain}${urlPath}\"\n";
} else {
print STDOUT "${channel}ERR\n";
}
}
}
Em seguida, adicione esses parâmetros de configuração em /etc/squid/squid.conf
:
acl pkiRestDomain dstdomain -n pki.globalpki123.com
acl pkiRestUrlPath urlpath_regex ^/rest(|\/.*)$
url_rewrite_program /etc/squid/urlrewrite.pl
url_rewrite_access allow pkiRestDomain pkiRestUrlPath
sslproxy_client_certificate /etc/pki/squid/certs/mylocalproxy.crt
sslproxy_client_key /etc/pki/squid/private/mylocalproxy.key
Ajuste sslproxy_client_certificate
e sslproxy_client_key
de acordo com o caminho real do certificado de cliente que o Squid usará.