Для этого есть несколько причин.
Наиболее очевидной из них может быть отсутствие цепочки сертификатов.
Информацию о цепочке можно получить из выдачи:
openssl s_client -showcerts -servername jordandb-shard-00-00-ykcna.mongodb.net -connect jordandb-shard-00-00-ykcna.mongodb.net:27017 </dev/null
Что скажет вам, что это от DigiCert.Так что либо вы пропустили цепочку сертификатов в вашем локальном хранилище сертификатов (в некоторых дистрибутивах вам может понадобиться установить доверие root root) .Но если у вас установлен root ca.Пришло время проверить время проверки сертификата.
Если вы добавите | openssl x509 -noout -dates
, вы получите действительные даты для этого сертификата:
openssl s_client -showcerts -servername jordandb-shard-00-00-ykcna.mongodb.net -connect jordandb-shard-00-00-ykcna.mongodb.net:27017 </dev/null | openssl x509 -noout -dates
Что говорит о том, что сертификат получен от DigiCert.
И сертификат действителен с 7/02-19 00:00 GMT
до 11/2-19 12:00 GMT
.
Запуск date
в любом терминале должен, надеюсь, сказать вам, что вы находитесь между этими двумя датами.
В любом другом случае, Я бы сказал, что это из-за самозаверяющего сертификата.
В этом случае вам нужно будет сделать одну из двух вещей:
MongoClient(..., ssl_ca_certs='/path/to/ca.pem')
MongoClient(..., ssl_cert_reqs=ssl.CERT_NONE)
Чтобы предоставить свой собственный ЦС или сказать Mongo, чтобы он игнорировал сертификатпроверка (последний вариант - наихудший из возможных вариантов. Даже если вы скажете: «Я не забуду исправить это позже», хех) .