เกิดข้อผิดพลาดระหว่าง SSL Handshake กับเซิร์ฟเวอร์ระยะไกล


119

ฉันได้Apache2(ฟัง 443) และเว็บแอปที่ทำงานบนTomcat7(ฟังบน 8443) Ubuntuบน

ฉันตั้งค่า apache2 เป็น reverse proxy เพื่อให้ฉันเข้าถึงเว็บแอปผ่านพอร์ต 443 แทนที่จะเป็น 8443 นอกจากนี้ฉันต้องมีการสื่อสาร SSL ไม่เพียง แต่ระหว่างเบราว์เซอร์และ apache2 เท่านั้น แต่ยังอยู่ระหว่าง apache2 และ tomcat7 ด้วยดังนั้นฉันจึงตั้งค่า SSL ทั้งบน apache2 และ tomcat7 . ถ้าฉันพยายามเข้าถึงเว็บแอปโดยติดต่อ tomcat7 โดยตรงทุกอย่างก็เรียบร้อยดี ปัญหาคือเมื่อฉันพยายามเข้าถึงเว็บแอปของ tomcat ผ่าน apache2 (reverse proxy) บนเบราว์เซอร์ปรากฏข้อผิดพลาด:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server

Apache ไม่ยอมรับใบรับรองที่คุณติดตั้งบนเครื่อง Tomcat เป็นใบรับรองที่ลงนามด้วยตนเองหรือไม่? หรือทำโดย CA ในองค์กร?
เอ็มเค.

2
ลงนามด้วยตนเองด้วยคำสั่งนี้: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/…ฉันคิดว่านี่คือสิ่งที่คุณต้องการ: SSLProxyVerify none SSLProxyCheckPeerCN off
MK

9
ควรตั้งค่าSSLProxyCACertificateFileเป็นใบรับรอง CA ส่วนตัวแทนที่จะปิดการยืนยัน
ndbroadbent

ตามที่อธิบายไว้ในบล็อกนี้คุณสามารถปิดการตรวจสอบ SSL ได้
HybrisHelp

คำตอบ:


267

ความคิดเห็นของ MK ชี้ให้ฉันไปในทิศทางที่ถูกต้อง

ในกรณีของ Apache 2.4 ขึ้นไปมีค่าเริ่มต้นที่แตกต่างกันและคำสั่งใหม่

ฉันใช้ Apache 2.4.6 และฉันต้องเพิ่มคำสั่งต่อไปนี้เพื่อให้มันใช้งานได้:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

ดังนั้นสิ่งนี้จะปิดการป้องกัน แต่ตราบใดที่การจราจรอยู่ในพื้นที่ (เช่น127.0.0.1:8443 ) ก็น่าจะมีปัญหาน้อยลงใช่ไหม?
bgStack15

5
มันไม่ได้ปิดการป้องกันด้วยการเข้ารหัสมากเป็นห่วง การรับส่งข้อมูลยังคงถูกเข้ารหัส เพียงแค่ปิดใช้งานการตรวจสอบใบรับรองเพื่อให้แน่ใจว่าได้รับการรับรองจากหน่วยงานที่เชื่อถือได้ ดังนั้นหากคุณเชื่อถือเซิร์ฟเวอร์คุณก็ไม่ควรมีปัญหา แต่ใช่สำหรับการจราจรในพื้นที่ฉันคิดว่าคุณสบายดีเช่นกัน
mydoghasworms

1
ขอบคุณ mydoghasworms คำสั่งของคุณใช้งานได้ในเวอร์ชันเซิร์ฟเวอร์: Apache / 2.4.6 หากมีใครต้องการทราบเวอร์ชันของ httpd ให้ใช้สิ่งนี้: httpd -V
JRichardsz

3

ฉันมีเซิร์ฟเวอร์ 2 เครื่องที่ติดตั้งบนนักเทียบท่าพร็อกซีย้อนกลับและเว็บเซิร์ฟเวอร์ ข้อผิดพลาดนี้เริ่มเกิดขึ้นกับเว็บไซต์ทั้งหมดของฉันในทันทีหลังจาก 1 ปี เมื่อตั้งค่าก่อนหน้านี้ฉันได้สร้างใบรับรองที่ลงนามด้วยตนเองบนเว็บเซิร์ฟเวอร์

ดังนั้นฉันต้องสร้างใบรับรอง SSL อีกครั้งและมันก็เริ่มทำงาน ...

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt


1

ประสบปัญหาเดียวกันกับ OP:

  • Tomcat ส่งคืนการตอบสนองเมื่อเข้าถึงโดยตรงผ่าน SOAP UI
  • ไม่ได้โหลดไฟล์ html
  • เมื่อใช้คุณสมบัติ Apache ที่กล่าวถึงในคำตอบก่อนหน้าเว็บเพจจะปรากฏขึ้น แต่ AngularJS ไม่สามารถรับการตอบสนอง HTTP

ใบรับรอง SSL ของ Tomcat หมดอายุในขณะที่เบราว์เซอร์แสดงว่าปลอดภัย - ใบรับรอง Apache ยังไม่หมดอายุ การอัปเดตไฟล์ Tomcat KeyStore ช่วยแก้ปัญหาได้

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