Ce ar face ca un server Gunicorn care rulează o aplicație Flask să raporteze o eroare „certificat de alertă sslv3 necunoscut” în browser, atunci când un server Apache care rulează o aplicație WSGI, folosind exact același certificat pe exact aceeași mașină, nu raportează nicio problemă?
Serviciul Gunicorn găzduiește de pe domeniu https://mysub.example.com:1234 în timp ce serviciul Apache găzduiește de la portul standard 80 la https://mysub.example.com.
Ambele servicii sunt găzduite pe același server fizic și încarcă certificatul SSL wildcard situat la /etc/ssl/certs
.
Jurnalele de la Gunicorn/Flask nu oferă prea mult feedback și arată pur și simplu:
[2021-06-23 12:55:34 -0500] [2320785] [DEBUG] Eroare la procesarea cererii SSL.
[2021-06-23 12:55:34 -0500] [2320785] [DEBUG] Solicitare nevalidă de la ip=123.45.678.90: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] certificat de alertă sslv3 necunoscut) (:_263l3.)
Serverul Gunicorn este rulat prin Supervisor cu ca utilizator www-data
comanda:
/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 server:app
Între timp, setările SSL pentru configurația Apache sunt:
SSLEngine activat
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/certs/example.com.key
SSLCACertificateFile /etc/ssl/certs/example.com.intermediate.crt
SSLProtocol toate
SSLCipherSuite HIGH:MEDIUM
Am verificat permisiunile /etc/ssl/certs
și par a fi corecte. Totul este deținut de utilizator www-data
chmoded la 600.
Nu văd niciun motiv pentru care certificatul ar fi servit corect de Apache, dar nu de Gunicorn. Mesajul de eroare sugerează că nu este neapărat ceva ce Gunicorn servește, ci o eroare sau o funcție acceptată cu solicitarea pe care o face browserul. Ce îmi lipsește aici?