ต้องการความช่วยเหลือในการแก้ไขปัญหาข้อผิดพลาดเว็บเซิร์ฟเวอร์ 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
นั่นทำงานได้ - เฉพาะกับคำสั่งทั้งหมดที่ไม่บ่น
Michael Böckling

@ MichaelBöcklingขอบคุณที่อุ้มฉัน ผมอยากจะชี้ให้เห็นว่าโดยเฉพาะเอกสารที่ระบุว่าSSLProxyCheckPeerNameแทนที่SSLProxyCheckPeerCNแต่มันจะไม่ทำงานเว้นแต่คุณจะระบุทั้งหมดของคำสั่ง
คู่

3

อย่ากังวลกับ HTTPS ระหว่าง front-end และเซิร์ฟเวอร์ back-end ของคุณมีจุดเล็กน้อยในการเปิดใช้งาน SSL สำหรับการlocalhostเชื่อมต่อ

เพื่อชี้แจงให้ใช้ProxyPass / http://localhost:3002/แทนProxyPass / https://localhost:3002/


หรือหากคุณต้องการเชื่อมต่อ reverse proxy ของคุณกับเซิร์ฟเวอร์ back-end โดยใช้ SSL เช่นกัน (ส่วนใหญ่มีประโยชน์เมื่อเซิร์ฟเวอร์นั้นไม่ได้ใช้ Apache reverse Httpd proxy) นอกจากนี้ให้https://backend-server-addressใช้SSLProxy*คำสั่งเพื่อตั้งค่า ใบรับรอง CA เป็นเอกสารในการแนะนำให้รู้จักกับ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' ... แต่ก็ยังไม่ทำงาน / ฉันได้รับข้อผิดพลาดเดียวกัน ไปที่localhost: 3002ยังให้ข้อผิดพลาดเดียวกัน
NullVoxPopuli

มีเหตุผลที่ถูกต้องสำหรับการเชื่อมต่อกับ https กับ localhost: example socket.io ใน HTTPS back-end มันจะผ่านข้อผิดพลาดกับเนื้อหาแบบผสม
Florestan06

3

ฉันมีปัญหาที่คล้ายกัน (บันทึกข้อผิดพลาดเดียวกัน) ยกเว้นว่าพร็อกซีส่งต่อการรับส่งข้อมูล https ไปยังโฮสต์อื่น
เนื่องจากฉันขี้เกียจและโฮสต์อยู่ในเครือข่ายแยกของฉันเองคำสั่งเหล่านี้แก้ปัญหา:

SSLProxyVerify ไม่มี
SSLProxyCheckPeerCN off


1

หากเซิร์ฟเวอร์เบื้องหลังใช้ใบรับรองที่ลงชื่อด้วยตนเองที่ล้าสมัยจำเป็นต้องมีตัวเลือกเพิ่มเติมอีกหนึ่งตัวเลือก (หากไม่มีการเข้าถึงเซิร์ฟเวอร์เบื้องหลัง):

ปิด SSLProxyCheckPeerExpire

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.