Я создаю приложение, используя следующий стек:
выполняется внутри контейнера Docker. Это приложение, в свою очередь, вызывает Jira API для сбора и обработки данных. Большая часть входящих в приложение работает нормально. Но когда приложение пытается вызвать Jira API, оно выдает следующую ошибку: [SSL: CERTIFICATE_VERIFY_FAILED]
Я считаю, что эта проблема возникает из-за наличия самоподписанного сертификата в цепочке (чего нельзя избежать). Я импортировал сертификаты в образ докера, и команда curl работала нормально (изначально curl также выдавал небезопасное предупреждение).
Кроме того, чтобы изолировать проблему, я выключил nginx и запустил приложение напрямую с помощью uwsgi (uwsgi --socket 0.0.0.0:8080 --protocol = http -w [модуль]: [приложение]) и увидел ту же ошибку в консоли uwsgi.
Означает ли это, что мне нужно импортировать сертификат SSL в uwsgi? Если да, то как именно это сделать. Я не собираюсь защищать свое приложение с помощью собственного сертификата или ключей. Эта программа работает, если я просто запускаю приложение flask без каких-либо uwsgi, nginx и докеров.
[редактировать] Добавление конфигурации Nginx
server {
listen 8080;
location / {
try_files $uri @app;
}
location @app {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
location /static {
alias /app/static;
}
location = / {
index /static/index.html;
}
}
uwsgi - напрямую вызывая его с помощью CLI для отладки
[Edit2] Итак, я предпринял еще несколько действий по устранению неполадок:
Кажется, что хотя curl работает нормально, сам python выдает ошибку SSL. Итак, СЕЙЧАС может возникнуть вопрос, как справиться с ошибкой SSL с помощью python !?
Также добавьте код. По крайней мере, конфиг nginx и uwsgi.
@JosefKorbel Я копирую файлы PEM внутри контейнера, а затем импортирую их внутрь. Также эти команды есть в моем dockerfile. Поскольку я новичок в этом, я не верю, что использую какие-либо ключи, это просто сертификаты.
Вы монтируете /etc/letsencrypt/live?


Наконец-то я смог решить проблему. Проблема была связана с вызовом запрос, выполняемым кодом. По умолчанию для вызовов запрос verify установлено значение true. Кроме того, запрос использует встроенные сертификаты для проверки. В моем случае, поскольку я использовал настраиваемые сертификаты, запрос не смог проверить сайт Jira. Чтобы решить эту проблему, я создал переменную ENV в файле докеров и указал запрос на ссылку на каталог сертификатов моего изображения. Точная линия
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/
Обратите внимание, что настраиваемые сертификаты все равно необходимо импортировать в образ докера во время сборки.
Вы монтируете свои ssl-ключи в докер-контейнер? У меня раньше была аналогичная проблема. Я монтировал неправильную папку letsencrypt.