Em relação ao uso de
SSL no
Squid, é preciso atentar que algumas opções SSL não suportam ACLs do tipo
fast (rápidas) e/ou
slow (lentas) e isso faz com que o Squid fique lento e/ou sujeito a travamentos.
Alguns tipos de ACLs, requerem a suspensão da requisição atual para poder acessar uma fonte de dados externa. Aquelas que são marcadas com a tag
[slow] são lentas, aquelas que são marcadas com a tag
[fast] são rápidas. E aquelas não marcadas, são rápidas.
Para ver sobre ACLs, leia a primeira e a segunda parte aqui:
Outro cuidado, é compilar o Squid com o parâmetro:
--enable-ssl
Caso queira utilizar ACLs externas, deve compilá-lo também com o parâmetro:
--enable-ssl-crtd
Em relação ao cálculo do
cache_mem e do cache_dir tem informações aqui:
Cada opção de
cache_dir tem um tipo específico de sistema de armazenamento para ser usado. O
ufs é o padrão.
Para ativar qualquer um dos outros sistemas de armazenamento, o Squid deve ser compilado com a opção
--enable-storeio= seguida do tipo de armazenamento que se quer (
aufs,
diskd, etc). Você pode compilá-lo com vários parâmetros habilitados.
Por exemplo:
--enable-storeio="ufs,aufs,diskd"
Os tipos de armazenamento
rock e
coos não são muito utilizados. O tipo
coos ainda é instável no
Squid 3.
Os títulos das páginas estão com o primeiro tópico abordado na página, porém, em uma página, tem mais informações do que o título descreve.
Perdoem-me pelos possíveis erros de revisão e de tradução.
SSL Options
TAG:
ssl_unclean_shutdown
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Alguns navegadores, especialmente o Internet Explorer, tem alguns bugs com as mensagens de desligamento do SSL.
Default:
ssl_unclean_shutdown off
TAG:
ssl_engine
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Usado com o
OpenSSL. Você vai precisar definir isso, caso use a aceleração SSL de Hardware, por exemplo.
Default:
none
TAG:
sslproxy_client_certificate
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Certificados SSL do cliente para usar com URLs:
https://
Default:
none
TAG:
sslproxy_client_key
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Chave SSL do cliente para usar com URLs:
https://
Default:
none
TAG:
sslproxy_version
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Define a versão SSL para usar com URLs:
https://
As versões suportadas são:
1 automatic (default)
2 SSLv2
3 SSLv3
4 TLSv1.0
5 TLSv1.1
6 TLSv1.2
Default:
sslproxy_version 1
TAG:
sslproxy_options
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Implementação das opções SSL para usar com URLs:
https://
As mais importantes são:
NO_SSLv2 - desabilita o uso de SSLv2
NO_SSLv3 - desabilita o uso de SSLv3
NO_TLSv1 - desabilita o uso de TLSv1.0
NO_TLSv1_1 - desabilita o uso de TLSv1.1
NO_TLSv1_2 - desabilita o uso de TLSv1.2
- SINGLE_DH_USE :: sempre cria uma nova chave ao usar a troca de chaves temporary/ephemeral DH
- SSL_OP_NOTICKET :: esta opção desativa o uso da RFC-5077 de tickets por sessão. Alguns servidores podem ter problemas em entender a extensão TLS devido à especificação ambígua na RFC4507.
- ALL :: permite vários bugs sugeridos como "inofensivos" pelo OpenSSL. Esteja avisado que isso pode reduzir a segurança SSL/TLS para alguns ataques.
Veja a documentação
SSL_CTX_set_options do OpenSSL para obter uma lista completa das opções possíveis.
Default:
none
TAG:
sslproxy_cipher
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Lista de cifragem SSL para usar com URLs:
https://
Os dois pontos (:) separam a lista das cifragens suportadas.
Default:
none
TAG:
sslproxy_cafile
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Arquivo contendo certificados CA para utilizar com URLs:
https://
Default:
none
TAG:
sslproxy_capath
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Diretório contendo certificados CA para utilizar com URLs:
https://
Default:
none
TAG:
ssl_bump
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Esta opção é consultada quando uma requisição CONNECT for recebida em
http_port (ou uma nova conexão for interceptada em
https_port), desde que a porta foi configurada com
ssl-bump.
Os dados posteriores sobre a conexão, ou são tratados como HTTPS e descriptografados, ou são tunelados como TCP sem decodificação, dependendo do primeiro
"mode" bump de acordo com a ACL usada.
ssl_bump <mode> [!] acl ...
Os seguintes modos
ssl-bump são suportados:
- cliente-first :: permite o bumping (colisão) da conexão. Estabelece uma conexão segura com o cliente em primeiro lugar, em seguida, conecta-se ao servidor. Este modo não permite que o Squid imite o certificado SSL do servidor e não funciona com conexões SSL interceptadas.
- server-first :: permite o bumping da conexão. Estabelece uma conexão segura com o servidor em primeiro lugar, em seguida, estabelece uma conexão segura com o cliente, imitando um certificado do servidor. Funciona com ambas as requisições de conexão (connect) e interceptações SSL .
- none :: torna-se um túnel TCP sem decodificar a ligação. Funciona com ambas as requisições de conexão e interceptação SSL. Este é o comportamento default quando nenhuma opção ssl_bump for dada ou quando não tem ACL ssl_bump declarada.
Por default, nenhuma conexão é colidida (bumped).
A primeira opção
ssl_bump encontrada ganha. Se nenhuma ACL for encontrada, a conexão não é colidida. Ao contrário da maioria das ACLs
allow/deny, a opção
ssl_bump não tem uma regra implícita do tipo "negar a última opção dada". Você deve fazer essa regra se for converter as regras antigas
ssl_bump allow/deny que dependem dessa regra.
Esta cláusula suporta ambos os tipos de ACLs, rápidas e lentas.
Veja:
Wiki.squid-cache.org - Squid Faq para mais detalhes.
Veja também: http_port ssl - colisão, https_port ssl - bump
Exemplo: "bumpa" todas as requisições, exceto as provenientes de localhost e quem vai para
example.com.
acl broken_sites dstdomain .example.com
ssl_bump non localhost
ssl_bump none broken_sites
ssl_bump server-first all
Default:
none
TAG:
sslproxy_flags
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Várias flags modificam o uso do SSL enquanto URLs
https:// são usadas:
- DONT_VERIFY_PEER :: aceita certificados que falharam a verificação.
- Para o controle refinado, consulte: sslproxy_cert_error
- NO_DEFAULT_CA :: não use o default CA da lista interna do OpenSSL.
Default:
none
TAG:
sslproxy_cert_error
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Utilize esta ACL para ignorar os erros de validação do certificado do servidor.
Por exemplo, as seguintes linhas irão ignorar todos os erros de validação quando dos servidores de
example.com. Todos os outros erros de validação irão resultar em
ERR_SECURE_CONNECT_FAIL.
acl BrokenButTrustedServers dstdomain example.com
sslproxy_cert_error allow BrokenButTrustedServers
sslproxy_cert_error deny all
Esta opção suporta as ACLs do
itp fast (rápidas).
Veja:
Wiki.squid-cache.org/SquidFaq para detalhes.
Usar ACLs lentas (slow) pode resultar em falhas do servidor.
Sem essa opção, todos os erros de validação de certificado de servidor finalizam a transação. É perigoso ignorar os erros de validação, porque um erro, geralmente, significa que o servidor pode ser não confiável e a conexão pode ser insegura.
Veja também:
sslproxy_flags and DONT_VERIFY_PEER.
Opção default:
sslproxy_cert_error deny all
Default:
none
TAG:
sslproxy_cert_sign
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
sslproxy_cert_sign <signing algorithm> acl ...
Os seguintes algoritmos de assinatura de certificado são suportados:
- signTrusted :: entra usando o certificado CA configurado que é geralmente colocado e é confiável pelos navegadores dos usuários finais. Este é o default para os certificados de origem do servidor de confiança.
- signUntrusted :: entra para garantir o erro X509_V_ERR_CERT_UNTRUSTED do navegador. Este é o Default para certificados de servidor de origem não confiável, que não são auto-assinados (ver ssl :: certUntrusted).
- signSelf :: entra usando um certificado auto-assinado com o CN certo de gerar o erro X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT no navegador. Este é o default para o servidor de origem com certificados auto-assinados (ver SSL :: certSelfSigned ).
Essa cláusula só suporta ACLs rápidas.
Quando a ACL
sslproxy_cert_sign acl for usada, o Squid usa o correspondente algoritmo para gerar o certificado e ignora todas as opções
sslproxy_cert_sign subsequentes (a primeira tem precedência). Se nenhuma ACL for usada, o algoritmo de assinatura default é determinado pelos erros detectados por ocasião da obtenção e validação do certificado do servidor de origem.
* Atenção:
SQUID_X509_V_ERR_DOMAIN_MISMATCH e
ssl:certDomainMismatch podem ser usadas com
sslproxy_cert_adapt, mas se, e somente se o Squid está batendo uma requisição de conexão que carrega um nome de domínio. Em todos os outros casos (conexão
[CONNECT] para um endereço IP ou uma conexão SSL interceptada), o Squid não consegue detectar a incompatibilidade de domínios no momento da geração do certificado, quando
bump-server-first for usado.
Default:
none
TAG:
sslproxy_cert_adapt
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
sslproxy_cert_adapt <adaptation algorithm> acl ...
Os seguintes algoritmos de adaptação de certificados são suportados:
- setValidAfter :: define a propriedade Not After (depois não) do certificado CA usado para assinar os certificados gerados.
- setValidBefore :: define a propriedade Not Before (antes não) do certificado CA usado para assinar os certificados gerados.
- setCommonName ou setCommonName { NC } :: define a propriedade Subject.CN para o nome do host especificado como um parâmetro CN ou, se nenhum parâmetro CN for indicado, é extraído da requisição CONNECT. É um erro de configuração usado em setCommonName sem um parâmetro explícito para conexões interceptadas (intercept) ou conexões tproxied SSL.
Essa cláusula só suporta tipos de ACLs rápidas.
O Squid, primeiro usa a opção
sslproxy_cert_adapt do algoritmo de adaptação. Dentro de um grupo, quando a ACL
sslproxy_cert_adapt corresponde, o Squid usa o algoritmo de adaptação correspondente para gerar o certificado e ignora todas as opções
sslproxy_cert_adapt subseqüentes (ou seja, o primeiro encontrado tem a precedência dentro de cada grupo). Se nenhuma ACL for encontrada, a ação default ocorre.
* Atenção:
SQUID_X509_V_ERR_DOMAIN_MISMATCH e
ssl:certDomainMismatch podem ser usadas com
sslproxy_cert_adapt, mas se, e somente se o Squid está batendo uma requisição de conexão que carrega um nome de domínio. Em todos os outros casos (conexão [CONNECT] para um endereço IP ou uma conexão SSL interceptada), o Squid não consegue detectar a incompatibilidade de domínios no momento da geração do certificado, quando
bump-server-first for usado.
Default:
none
TAG:
sslpassword_program
Nota: esta opção só está disponível se o Squid for compilado com o parâmetro:
--enable-ssl
Especifica um programa usado para inserir senhas de chaves SSL quando utilizar chaves SSL criptografadas. Se não for especificada nenhuma chave, ou deve ser criptografado, ou o Squid começou com a opção
-N para permitir a consulta de maneira interativa para a senha.
O nome do arquivo de chave é dado como argumento para o programa permitir a seleção da senha correta, se você tiver várias chaves criptografadas.
Default:
none