Как исправить ошибку urlopen [SSL: CERTIFICATE_VERIFY_FAILED] не удалось проверить сертификат (_ssl.c: 590)> Ошибка - PullRequest
0 голосов
/ 09 февраля 2019

В настоящее время я работаю с Sentry в Кубернетесе с автоматической генерацией сертификата с использованием Let's encrypt и cert-manager.Когда Sentry пытается отправить ошибку на часовой сервер, выдается следующая ошибка:

urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (url: https://example.host.com/)

Я убедился, что установлены правильные пакеты Python для 2.7.15.Пакеты включают certifi, urllib2 вместе с зависимостями.

Отключение проверки TLS работает, но это последнее средство.Безопасность очень важна, даже если это внутренняя служба.

1 Ответ

0 голосов
/ 09 февраля 2019

По моему опыту, даже самые современные ca-certificates пакеты иногда не содержат всех 3 Let's Encrypt сертификатов .Решение (?) Состоит в том, чтобы загрузить их в «управляемый пользователем» каталог сертификатов (часто /usr/local/share/ca-certificates), а затем повторно запустить update-ca-certificates:

# the first one very likely is already in your chain,
# but including it here won't hurt anything
for i in isrgrootx1.pem.txt lets-encrypt-x3-cross-signed.pem.txt letsencryptauthorityx3.pem.txt
do
    curl -vko /usr/local/share/ca-certificates/`basename $i .pem.txt`.crt \
        https://letsencrypt.org/certs/$i
done
update-ca-certificates

ИдеальноВ результате этот процесс будет выполняться для каждого узла в кластере, а затем том смонтирован каталог фактический ssl в контейнеры, так что каждый контейнер использует новейшие сертификаты.Однако, я думаю, простое выполнение в затронутых контейнерах тоже может сработать.

update: я неправильно запомнил, это /usr/local/..., и эти файлы, очевидно, должны заканчиваться на .crt,не .pem

...