Рейтинг:1

Gunicorn/Flask отклоняет идентичный SSL-сертификат, который отлично работает с Apache

флаг in

Что может привести к тому, что сервер Gunicorn, на котором запущено приложение Flask, сообщит об ошибке «неизвестный сертификат предупреждения sslv3» в браузере, когда сервер 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:

SSLEngine включен
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/certs/example.com.key
SSLCACertificateFile /etc/ssl/certs/example.com.intermediate.crt
SSLПротокол все
SSLCipherSuite ВЫСОКИЙ: СРЕДНИЙ

Я проверил разрешения в /etc/ssl/сертификаты, и они кажутся правильными. Все принадлежит пользователю www-данные chmoded до 600.

Я не вижу причин, по которым сертификат будет правильно обслуживаться Apache, а не Gunicorn. Сообщение об ошибке предполагает, что это не обязательно что-то, что обслуживает Gunicorn, а ошибка или какая-то поддерживаемая функция с запросом, который делает браузер. Что мне здесь не хватает?

Рейтинг:0
флаг in

Моя проблема была по существу дубликатом этот вопрос, и основная причина заключалась в том, что мои клиентские сертификаты устарели.

Этот ответ решил мою проблему, обновив мой локальный ca-сертификаты упаковка.

Рейтинг:0
флаг cz

Gunicorn (и практически все остальное, что делает TLS кроме Apache) ожидает, что ваш сертификат TLS будет объединен с промежуточными сертификатами в одном файле.

Создайте объединенный файл:

кошка /etc/ssl/certs/example.com.crt /etc/ssl/certs/example.com.intermediate.crt > /etc/ssl/certs/example.com.chain.crt

Теперь используйте его в своей командной строке.

.... --certfile=/etc/ssl/certs/example.com.chain.crt ....

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.