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.
- Скачайте https://letsencrypt.org/certs/lets-encrypt-r3.pem .
- переименуйте файл .pem в .cer
- дважды щелкните и установите
- Перезагрузите свой ПК
Все равно, если это не работает
- Перейдите на https://letsencrypt.org/certificates/ .
- Скачайте ISRG Root X1, ISRG Root X2 (корневые сертификаты), Let's Encrypt R3 (промежуточные сертификаты)
- Перезагрузите свой ПК