Назад | Перейти на главную страницу

Требуется помощь при устранении неполадок, связанных с ошибкой веб-сервера Https - ошибка подтверждения SSL

Я следовал этому руководству: 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>

И когда я пытаюсь подключиться к серверу через веб-браузер, я получаю такую ​​ошибку:

[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 ()

как мне отладить / исправить это?

Чтобы добавить к ответу vbartoni, кажется, что начиная с Apache 2.4 и выше существуют разные значения по умолчанию и новая директива.

Я использую Apache 2.4.6, и мне пришлось добавить следующие директивы, чтобы он заработал:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

У меня была аналогичная проблема (те же журналы ошибок), за исключением того, что прокси-сервер перенаправлял трафик https на другой хост.
Поскольку я был ленив и хосты находятся в моей изолированной сети, эти директивы решили проблему:

SSLProxyVerify нет
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 (отсюда и бесконечные перенаправления). Вы можете посмотреть на аналогичные механизмы, как Джетти делает со своими forwarded вариант (чтобы иметь возможность сообщить серверу, что он находится за прокси). Rails может интерпретировать X-Forwarded-Proto по умолчанию. В этом случае добавьте это в свою конфигурацию Apache (на виртуальном хосте SSL):

RequestHeader set X-Forwarded-Proto 'https'

Кажется, обсуждается похожий вопрос Вот, например.

Если внутренний сервер использует устаревший самоподписанный сертификат, потребуется еще один вариант (если нет доступа к внутреннему серверу):

SSLProxyCheckPeerExpire выключен