Tenho muitos servidores que acessam vários serviços da Web externos, a maioria dos quais usa SSL, alguns dos quais exigem certificados de cliente. Gostaria de centralizar a configuração dos certificados do cliente e dissociar a camada de apresentação dos servidores subjacentes.
Embora eu possa usar o Squid para fazer proxy das solicitações, não consigo ver nos documentos como dizer ao Squid para selecionar um certificado de cliente específico para o serviço da web de destino. Isso é possível?
Uma abordagem seria manter uma gangue de instâncias de stunnel além do proxy Squid e, em seguida, configurar o software cliente para usar solicitações http com um reescritor de URL para rotear a solicitação por meio da instância de stunnel apropriada; no entanto, isso será interrompido se eu obtiver uma referência de resposta XML um HTTPS DTD (a menos que eu reescreva o conteúdo com um MITM completo).
Existe outra solução?
atualizar
O problema de reescrever 'https' para 'http' é que ele quebra todos os recursos adicionais com um URI http - já que o adaptador de protocolo os converterá de volta para https!
Encontrei este artigo que abordava o problema de adicionar um certificado de cliente a uma conexão proxy - o que é potencialmente uma solução. Mas requer que o cliente seja configurado para usar um proxy, também há problemas em nomear coisas e como fazê-lo funcionar com DNS dividido. Reconheço que não são grandes problemas, mas isso me fez pensar que o que estou descrevendo aqui é o padrão usado pela maioria dos provedores de CDN - portanto, atualmente estou pensando em usar o Apache Traffic Server como componente intermediário - isso permite o uso de DNS dividido, canais SSL separados entre o cliente e a origem, e certificados de cliente para a comunicação com o servidor de origem.
Descriptografia e criptografia Squid-in-the-middle de CONNECT direto e tráfego SSL redirecionado de forma transparente, usando certificados CA configuráveis.
http://wiki.squid-cache.org/Features/SslPeekAndSplice
Depois de pesquisar mais, decidi usar instâncias consecutivas de libra. Também considerei usar stunnel ou haproxy, mas libra lida com o material SSL e tem uma capacidade básica para manipular cabeçalhos http.