Estou tentando fazer essa configuração funcionar:
Portanto, a conexão deve ser:
O que eu fiz de bom:
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>