Я следовал этому руководству: http://hints.macworld.com/article.php?story=20041129143420344
Вот мое определение виртуального хоста
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
CacheDisable *
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
DocumentRoot "/Users/me/projects/myproject/public"
ServerName ssl.mydomain.com
ServerAlias *.ssl.mydomain.com
SSLCertificateKeyFile "/private/etc/apache2/certs/webserver.nopass.key"
SSLCertificateFile "/private/etc/apache2/certs/newcert.pem"
SSLCACertificateFile "/private/etc/apache2/certs/demoCA/cacert.pem"
SSLCARevocationPath "/private/etc/apache2/certs/demoCA/crl"
ErrorLog "/Users/me/Desktop/ssl.log"
ProxyPass / https://localhost:3002/
ProxyPassReverse / https://localhost:3002
ProxyPreserveHost on
</VirtualHost>
И когда я пытаюсь подключиться к sevre viov веб-браузеру, я получаю эту ошибку:
[Thu Feb 02 16:50:40 2012] [error] (502)Unknown error: 502: proxy: pass request body failed to 127.0.0.1:3002 (localhost)
[Thu Feb 02 16:50:40 2012] [error] [client 96.11.81.39] proxy: Error during SSL Handshake with remote server returned by /session/new
[Thu Feb 02 16:50:40 2012] [error] proxy: pass request body failed to 127.0.0.1:3002 (localhost) from 96.11.81.39 ()
как мне отладить / исправить это?
apache-2.2
ssl
https
virtualhost
NullVoxPopuli
источник
источник
SSLProxyCheckPeerName
заменяет собой,SSLProxyCheckPeerCN
но она не будет работать, если вы не укажете все директивы.Не беспокойтесь по поводу HTTPS между вашим интерфейсом и вашим внутренним сервером, нет смысла включать SSL для
localhost
соединения.Чтобы уточнить, используйте
ProxyPass / http://localhost:3002/
вместоProxyPass / https://localhost:3002/
В качестве альтернативы, если вы действительно хотите подключить свой обратный прокси-сервер к внутреннему серверу также с использованием SSL (в основном это полезно, когда этот сервер находится не там, где находится обратный прокси-сервер Apache Httpd), в дополнение к этому
https://backend-server-address
используйтеSSLProxy*
директивы для настройки Сертификаты CA, как указано во введении кmod_proxy
документации . В частности, вам нужно будет настроитьSSLProxyCACertificateFile
и убедиться, что сертификат внутреннего сервера выдан на правильное имя хоста, как это видит Apache Httpd (т.е.localhost
в вашем случае).Если вы не подключаетесь к своему внутреннему серверу по протоколу SSL, он может не определить, действительно ли вы используете SSL, и настроить его на принудительное использование SSL (отсюда и бесконечные перенаправления). Возможно, вы захотите взглянуть на механизмы, аналогичные тем, что делает Jetty со своей
forwarded
опцией (чтобы иметь возможность сообщить фону, что он находится за прокси-сервером). Rails может интерпретироватьX-Forwarded-Proto
по умолчанию. В этом случае добавьте это в конфигурацию Apache (на виртуальном хосте SSL):Например, здесь обсуждается похожая проблема .
источник
У меня была похожая проблема (те же журналы ошибок), за исключением того, что прокси-сервер переадресовывал трафик https на другой хост.
Поскольку я был ленив, а узлы находятся в моей собственной изолированной сети, эти директивы решили проблему:
SSLProxyVerify none
SSLProxyCheckPeerCN off
источник
Если внутренний сервер использует устаревший самозаверяющий сертификат, необходим еще один параметр (если нет доступа к внутреннему серверу):
SSLProxyCheckPeerExpire off
источник