O Apache SSL Proxy não consegue encontrar o certificado do cliente?

3

Meus servidores da web precisam se integrar ao servidor de terceiros que fica atrás de um firewall. Para passar pelo firewall, todas as solicitações precisam vir do mesmo endereço IP e ser autenticadas via SSL. Então eu configurei uma máquina que deveria funcionar como um proxy e encaminhar todo o tráfego via SSL para o servidor de terceiros.

Eu configurei o proxy com os certificados e arquivos de chave correspondentes e posso fazer uma solicitação bem-sucedida para o serviço de terceiros via CURL, usando o certificado e o arquivo de chave. Eu vejo um host virtual no Apache para passar essas solicitações, mas continuo recebendo erros dizendo que o handshake SSL com o servidor remoto falhou. Eu vejo as seguintes mensagens de erro nos meus logs do Apache:

Proxy client certificate callback: (:443) downstream server wanted client certificate but none are configured [Sun Jul 29 01:40:48 2012] [error] (502)Unknown error 502: proxy: pass request body failed to <3rd party IP>:18443 (<3rd party URL>)
[Sun Jul 29 01:40:48 2012] [error] [client ] proxy: Error during SSL Handshake with remote server returned by /

Minha configuração de host virtual do apache é a seguinte:

<VirtualHost *:18443>
    ServerName <Proxy IP>
    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/apache2/ssl/my_server.pem
    SSLCertificateKeyFile /etc/apache2/ssl/my_server.key
    SSLProxyCACertificatePath /etc/ssl/certs
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / https://<3rd party server address>:18443
    ProxyPassReverse / https://<3rd party server address>:18443
</VirtualHost>

Obrigado! Qualquer ajuda é muito apreciada!

    
por ajmurmann 29.07.2012 / 03:58

3 respostas

3

Você precisa configurar o Apache para usar esse arquivo de certificado como um mecanismo de autenticação em seu back-end de proxy.

Combine .pem e .key em um arquivo e aponte para ele com:

SSLProxyMachineCertificateFile /path/to/combined.pem
    
por 29.07.2012 / 06:11
2

O que ele realmente está pedindo, é um Apache que faz o proxy das solicitações SSL para um servidor de terminal, presumivelmente um servidor de aplicativos, que faz autenticação de certificado de cliente SSL ...

O SSLProxyMachineCertificateFile não ajudará nesse caso, pois esse arquivo contém um certificado pelo qual o servidor apache se autentica com o servidor de aplicativos ... você não quer isso: você quer que o cliente solicitante use seu certificado

Presumivelmente, deve ser possível que o Apache passe as informações do certificado que obtém para o servidor de aplicativos, por exemplo, via AJP, mas não consegui fazer isso funcionar até agora. Vou tentar atualizar esta resposta se eu conseguir que ela funcione ...

    
por 28.11.2012 / 13:29
0

Eu tive os mesmos erros. Pode haver um problema com um nome de ponto configurado que não corresponda à atual diretiva ProxyPass . Com efeito, eu acesso o serviço por localhost. As seguintes linhas de configuração funcionaram para mim:

SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass "/api/" "https://localhost:18443/api/"

(graças ao comentário do @ajmurmann )

Mas a mensagem Proxy client certificate callback: (:443) downstream server wanted client certificate but none are configured ainda está no log de erros, mas as solicitações estão funcionando.

    
por 04.01.2018 / 12:06