Потрібна допомога щодо зйомки помилки веб-сервера Https - не вдалося виконати SSL Handshake


9

Я дотримувався цього керівництва: 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 ()

як це налагодити / виправити?

Відповіді:


12

Щоб додати відповідь vbartoni, здається, що від Apache 2.4 і вище існують різні типові параметри та нова директива.

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

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

1
Це робить роботу - тільки з усіма цими директивами нарікати не буду.
Майкл Бёклінг

@ MichaelBöckling Дякую, що мене затримали. Я хочу конкретно зазначити, що в документації зазначено, що SSLProxyCheckPeerNameзаміняється, SSLProxyCheckPeerCNале вона не працюватиме, якщо ви не вкажете всі директиви.
Датується

3

Не турбуйтеся з HTTPS між своїм зовнішнім і серверним сервером, мало можливостей увімкнути SSL для localhostз'єднання.

Для уточнення використовуйте ProxyPass / http://localhost:3002/замістьProxyPass / https://localhost:3002/


Крім того, якщо ви дійсно хочете підключити зворотний проксі-сервер до бек-сервера, використовуючи також SSL (в основному корисно, коли цей сервер не там, де знаходиться зворотний проксі-сервер Apache Httpd), на додаток до цього https://backend-server-address, використовуйте SSLProxy*директиви для настройки Сертифікати СА, як це зафіксовано у вступі до mod_proxyдокументації . Зокрема, вам потрібно буде налаштувати SSLProxyCACertificateFileта переконатись, що сертифікат сервера, який надається, видається на правильне ім'я хоста, як це бачить Apache Httpd (тобто localhostу вашому випадку).


Якщо ви не підключаєтесь до свого бек-сервера за допомогою SSL, він може виявити, що ви насправді використовуєте SSL, і буде налаштовано так, щоб змусити вас переходити до SSL (отже, нескінченні переадресації). Ви можете поглянути на подібні механізми, як на те, що робить Jetty зі своєю forwardedопцією (щоб можна було сказати, що це за проксі). Рейки можуть бути інтерпретовані X-Forwarded-Protoза замовчуванням. У цьому випадку додайте це до конфігурації Apache (у віртуальному хості SSL):

RequestHeader set X-Forwarded-Proto 'https'

Здається , наприклад, тут обговорюється подібне питання .


SSLProxy згадується лише один раз на цьому посиланні. Ніяких прикладів, як ним користуватися. Я змінив заголовок запиту, щоб встановити X-Forwarded-Proto 'https' ... але він все ще не працює / я отримую ту ж помилку. Перехід на localhost: 3002 також дає ту саму помилку
NullVoxPopuli

Існують поважні причини підключення до https з localhost: example socket.io у зворотній частині HTTPS. Це буде через помилки зі змішаним вмістом.
Florestan06

3

У мене була подібна проблема (ті ж журнали помилок), за винятком того, що проксі пересилав https трафік на інший хост.
Оскільки я лінивий і господарі знаходяться в моїй власній ізольованій мережі, ці директиви вирішили проблему:

SSLProxyПеревірити відсутність
SSLProxyCheckPeerCN вимкнено


1

Якщо сервер резервного сервера використовує застарілий сертифікат самопідписання, потрібен ще один варіант (якщо немає доступу до сервера резервного сервера):

SSLProxyCheckPeerExpire вимкнено

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.