Pymongo.errors.ServerSelectionTimeoutError [SSL: CERTIFICATE_VERIFY_FAILED]

Я использую MongoDB (Mongo Atlas) в своем Django приложении. До вчерашнего дня все работало нормально. Но сегодня, когда я запустил сервер, он показал мне следующую ошибку на консоли

Я использую djongo в качестве движка базы данных

DATABASES = {
    'default': {
            'ENGINE': 'djongo',
            'NAME': 'DbName',
            'ENFORCE_SCHEMA': False,
            'CLIENT': {
                'host': 'mongodb+srv://username:password@cluster0.mny7y.mongodb.net/DbName?retryWrites=true&w=majority'
            }  
    }
}

В приложении используются следующие зависимости

dj-database-url==0.5.0
Django==3.2.5
djangorestframework==3.12.4
django-cors-headers==3.7.0
gunicorn==20.1.0
psycopg2==2.9.1
pytz==2021.1
whitenoise==5.3.0
djongo==1.3.6
dnspython==2.1.0

Что нужно сделать, чтобы устранить эту ошибку?

Это связано с тем, что срок действия корневого CA, который использует Let's Encrypt (а Mongo Atals использует Let's Encrypt), истек в 2020-09-30 - а именно "IdentTrust DST Root CA X3".

Для меня исправление заключалось в ручной установке в хранилище сертификатов Windows корневых сертификатов "ISRG Root X1" и "ISRG Root X2" и промежуточного "Let's Encrypt R3" - ссылка на их официальный сайт - https://letsencrypt.org/certificates/

Я решил проблему на своей машине windows. Это было связано с истекающим сроком действия сертификата DST Root CA X3 от Let's Encrypt.

  1. Скачайте https://letsencrypt.org/certs/lets-encrypt-r3.pem
  2. .
  3. переименуйте файл .pem в .cer
  4. дважды щелкните и установите
  5. Перезагрузите свой ПК

Все равно, если это не работает

  1. Перейдите на https://letsencrypt.org/certificates/
  2. .
  3. Скачайте ISRG Root X1, ISRG Root X2 (корневые сертификаты), Let's Encrypt R3 (промежуточные сертификаты)
  4. Перезагрузите свой ПК
Вернуться на верх