Https 웹 서버 오류를 촬영하는 데 문제가 필요합니다-SSL 핸드 셰이크에 실패했습니다


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
그것은 그 일을합니다-모든 지시문만으로는 불평하지 않을 것입니다.
Michael Böckling

@ MichaelBöckling 감사합니다. 나는 내용은 해당 진술 것을 특별히 지적 할 SSLProxyCheckPeerName대체를 SSLProxyCheckPeerCN하지만 당신은 지정하지 않으면 작동하지 않습니다 모든 지시어를.
듀얼

3

프런트 엔드 서버와 백엔드 서버간에 HTTPS를 사용하지 않아도 localhost연결에 SSL을 사용하는 데 별다른 문제가 없습니다 .

명확히하기 위해 ProxyPass / http://localhost:3002/대신에 사용하십시오.ProxyPass / https://localhost:3002/


또는 SSL을 사용하여 리버스 프록시를 백엔드 서버에 실제로 연결하려는 경우 (대부분 해당 서버가 Apache Httpd 리버스 프록시가없는 경우에 유용함) 지시문을 https://backend-server-address사용 SSLProxy*하여 에 설명 된대로 CA는 CERTS 받는 도입 mod_proxy문서 . 특히, SSLProxyCACertificateFile백엔드 서버의 인증서 가 Apache Httpd (예 : localhost귀하의 경우) 에 표시된 올바른 호스트 이름 으로 발행 되도록 구성 하고 확인해야합니다 .


SSL을 사용하여 백엔드 서버에 연결하지 않으면 실제로 SSL을 사용하고 있음을 감지하지 못하고 SSL로 강제 이동하도록 구성 될 수 있습니다 (따라서 무한 경로 재 지정). Jetty가 forwarded옵션 으로 수행하는 것과 유사한 메커니즘을 살펴볼 수 있습니다 (백엔드에게 프록시 뒤에 있음을 알릴 수 있음). Rails는 X-Forwarded-Proto기본적 으로 해석 할 수 있습니다 . 이 경우 Apache 구성 (SSL 가상 호스트)에 다음을 추가하십시오.

RequestHeader set X-Forwarded-Proto 'https'

예를 들어 여기 에서 논의 된 비슷한 문제가있는 것 같습니다 .


SSLProxy는 해당 링크에서 한 번만 언급됩니다. 사용 방법에 대한 예는 없습니다. X-Forwarded-Proto 'https'로 설정하도록 요청 헤더를 변경했지만 여전히 작동하지 않습니다 / 동일한 오류가 발생합니다. 에가는 로컬 호스트 : 3002은 또한 동일한 오류 제공
NullVoxPopuli

HTTPS 백엔드에서 localhost : example socket.io를 사용하여 https에 연결하는 데에는 올바른 이유가 있습니다. 내용이 혼합 된 오류가 발생합니다.
Florestan06

3

프록시가 https 트래픽을 다른 호스트로 전달하는 것을 제외하고 비슷한 문제가 발생했습니다 (동일한 오류 로그).
내가 게으르고 호스트가 내 고립 된 네트워크에 있기 때문에 이러한 지시문은 문제를 해결했습니다.

SSLProxyVerify none
SSLProxyCheckPeerCN off


1

백엔드 서버가 오래된 자체 서명 인증서를 사용하는 경우 하나 이상의 옵션이 필요합니다 (백엔드 서버에 액세스 할 수없는 경우).

SSLProxyCheckPeer 만료

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.