Apache: O nome do host errado é verificado ao conectar-se ao servidor proxy usando o SSL

1

Estou tentando fazer essa configuração funcionar:

  • Proxy reverso: SSL ativado e voltado para a Internet usando o certificado Let's Encrypt (reverse-proxy.com).
  • Destino: Site acessado por meio do proxy reverso com SSL ativado usando a cadeia de certificados internos (target.internal).

Portanto, a conexão deve ser:

  • Cliente para reverter o handshake de TLS do proxy
  • Proxy reverso para segmentar o handshake de TLS [failling]

O que eu fiz de bom:

  • Adicionando meu certificado CA raiz ao servidor proxy
  • Adicionando certificado, chave e cadeia ao destino
  • tentando com sucesso openssl s_client -connect target.internal:443 -prexit -CAfile /var/certs/root-ca.crt do proxy reverso

Mas o Apache está falhando porque ao tentar se conectar a "target.internal", ele quer encontrar o nome de host "reverse-proxy.com" no certificado de destino, enquanto o certificado de destino foi criado para "target.internal".

Eu tenho este erro no meu log:

Cert does not match for name 'reverse-proxy.com'

Imprime isso depois de percorrer com êxito a cadeia de certificados de "root-ca.crt" até "target.internal.crt".

Não entendi porque o Apache não está procurando por um certificado feito para "target.internal".

Alguém tem uma ideia? Obrigado.

EDITAR:

Listen 0.0.0.0:443 https

SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>

        ErrorLog logs/ssl_error_log
        TransferLog logs/ssl_access_log
        LogLevel trace1

        SSLEngine on
        SSLProxyEngine on
        SSLProxyCACertificateFile /var/certs/root-ca.crt

        SSLProtocol -all +TLSv1.2 
        SSLCipherSuite HIGH:!SSLv3:!kRSA:!kECDH:!ADH:!DSS

        SSLCertificateFile /etc/letsencrypt/live/reverse-proxy.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/reverse-proxy.com/privkey.pem

        <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
        </Files>
        <Directory "/var/www/cgi-bin">
            SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \                                                                                                                       
         downgrade-1.0 force-response-1.0                                                                                                                         

        CustomLog logs/ssl_request_log \                                                                                                                          
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"                                                                                                       

        ServerName reverse-proxy.com                                                                                                                              
        SSLCertificateChainFile /etc/letsencrypt/live/reverse-proxy.com/chain.pem                                                                                                                                                                                              

        ProxyPreserveHost On                                                                                                                                                                                                                                                   
        RewriteEngine On                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

        RewriteRule         ^/stuff/(.*)$     https://target.internal/$1 [P]                                                                                                                                                                                                     
        ProxyPassReverse    /stuff/           https://target.internal/                                                                                                                                                                                                           

</VirtualHost> 
    
por MathieuR 10.11.2017 / 17:16

0 respostas