อะไรทำให้เซิร์ฟเวอร์ Gunicorn ที่ใช้งานแอป Flask รายงานข้อผิดพลาด "sslv3 alert certificate ไม่รู้จัก" ในเบราว์เซอร์ เมื่อเซิร์ฟเวอร์ Apache เรียกใช้แอป WSGI โดยใช้ใบรับรองเดียวกันทุกประการในเครื่องเดียวกัน รายงานว่าไม่มีปัญหา
บริการ Gunicorn โฮสต์จากโดเมน https://mysub.example.com:1234 ในขณะที่บริการ Apache โฮสต์จากพอร์ตมาตรฐาน 80 ที่ https://mysub.example.com.
บริการทั้งสองโฮสต์บนเซิร์ฟเวอร์จริงเดียวกัน และโหลดใบรับรอง SSL ที่เป็นสัญลักษณ์แทนซึ่งอยู่ที่ /etc/ssl/ใบรับรอง
.
บันทึกจาก Gunicorn/Flask ไม่ได้ให้ข้อเสนอแนะมากนักและแสดงเพียง:
[2021-06-23 12:55:34 -0500] [2320785] [DEBUG] เกิดข้อผิดพลาดในการประมวลผลคำขอ SSL
[2021-06-23 12:55:34 -0500] [2320785] [DEBUG] คำขอไม่ถูกต้องจาก ip=123.45.678.90: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ไม่รู้จักใบรับรองการแจ้งเตือน sslv3 (_ssl.c:2633)
เซิร์ฟเวอร์ Gunicorn ทำงานผ่าน Supervisor โดยมีผู้ใช้เป็น www-ข้อมูล
คำสั่ง:
/usr/local/alphabuyer/.env/bin/gunicorn --certfile=/etc/ssl/certs/example.com.crt --keyfile=/etc/ssl/certs/example.com.key --bind 0.0. 0.0:1234 เซิร์ฟเวอร์:แอป
ในขณะเดียวกัน การตั้งค่า SSL สำหรับ Apache config คือ:
SSLEngine เปิดอยู่
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/certs/example.com.key
SSLCACertificateFile /etc/ssl/certs/example.com.intermediate.crt
SSLProtocol ทั้งหมด
SSLCipherSuite สูง:ปานกลาง
ฉันได้ตรวจสอบสิทธิ์ใน /etc/ssl/ใบรับรอง
และดูเหมือนจะถูกต้อง ทุกอย่างเป็นของผู้ใช้ www-ข้อมูล
ปรับเป็น 600
ฉันไม่เห็นเหตุผลใด ๆ ว่าทำไมใบรับรองจึงแสดงอย่างถูกต้องโดย Apache แต่ไม่ใช่โดย Gunicorn ข้อความแสดงข้อผิดพลาดระบุว่าไม่จำเป็นต้องมีสิ่งใดที่ Gunicorn กำลังให้บริการ แต่เป็นข้อผิดพลาดหรือคุณลักษณะบางอย่างที่สนับสนุนพร้อมกับคำขอที่เบราว์เซอร์สร้างขึ้น ฉันพลาดอะไรไปที่นี่?