Я пытаюсь заставить эту настройку работать:
Итак, соединение должно быть:
Что у меня получилось хорошо:
openssl s_client -connect target.internal:443 -prexit -CAfile /var/certs/root-ca.crt
из обратного проксиНо Apache терпит неудачу, потому что при попытке подключения к target.internal он хочет найти имя хоста «reverse-proxy.com» в целевом сертификате, в то время как целевой сертификат был создан для «target.internal».
У меня в журнале есть такая ошибка:
Cert does not match for name 'reverse-proxy.com'
Он печатает это после успешного прохождения цепочки сертификатов от «root-ca.crt» до «target.internal.crt».
Я не понимаю, почему Apache не ищет сертификат, сделанный для "target.internal".
У кого-то есть идея? Спасибо вам.
РЕДАКТИРОВАТЬ :
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>