Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

407
Views
pymongo [SSL: CERTIFICATE_VERIFY_FAILED]: el certificado ha caducado en Mongo Atlas

Estoy usando MongoDB (Mongo Atlas) en mi aplicación Django. Todo funcionaba bien hasta ayer. Pero hoy, cuando ejecuté el servidor, me muestra el siguiente error en la consola

 Exception in thread django-main-thread: Traceback (most recent call last): File "c:\users\admin\appdata\local\programs\python\python39\lib\threading.py", line 973, in _bootstrap_inner self.run() File "c:\users\admin\appdata\local\programs\python\python39\lib\threading.py", line 910, in run self._target(*self._args, **self._kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\core\management\commands\runserver.py", line 121, in inner_run self.check_migrations() File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\core\management\base.py", line 486, in check_migrations executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS]) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\migrations\executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\migrations\loader.py", line 53, in __init__ self.build_graph() File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\migrations\loader.py", line 220, in build_graph self.applied_migrations = recorder.applied_migrations() File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\migrations\recorder.py", line 77, in applied_migrations if self.has_table(): File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table tables = self.connection.introspection.table_names(cursor) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\backends\base\introspection.py", line 52, in table_names return get_names(cursor) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\django\db\backends\base\introspection.py", line 47, in get_names return sorted(ti.name for ti in self.get_table_list(cursor) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\djongo\introspection.py", line 47, in get_table_list for c in cursor.db_conn.list_collection_names() File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\database.py", line 880, in list_collection_names for result in self.list_collections(session=session, **kwargs)] File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\database.py", line 842, in list_collections return self.__client._retryable_read( File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\mongo_client.py", line 1514, in _retryable_read server = self._select_server( File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\mongo_client.py", line 1346, in _select_server server = topology.select_server(server_selector) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\topology.py", line 244, in select_server return random.choice(self.select_servers(selector, File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\topology.py", line 202, in select_servers server_descriptions = self._select_servers_loop( File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\Lib\site-packages\pymongo\topology.py", line 218, in _select_servers_loop raise ServerSelectionTimeoutError( pymongo.errors.ServerSelectionTimeoutError: cluster0-shard-00-02.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),cluster0-shard-00-01.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),cluster0-shard-00-00.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129), Timeout: 30s, Topology Description: <TopologyDescription id: 6155f0c9148b07ff5851a1b3, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('cluster0-shard-00-00.mny7y.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('cluster0-shard-00-00.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>, <ServerDescription ('cluster0-shard-00-01.mny7y.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('cluster0-shard-00-01.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>, <ServerDescription ('cluster0-shard-00-02.mny7y.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('cluster0-shard-00-02.mny7y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>]>

estoy usando djongo como motor de base de datos

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

Y las siguientes dependencias se están utilizando en la aplicación

 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

¿Qué se debe hacer para resolver este error?

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Esto se debe a que una CA raíz que usa Let's Encrypt (y Mongo Atals usa Let's Encrypt) expiró el 2020-09-30, a saber, la "IdentTrust DST Root CA X3".

La solución es instalar manualmente en el almacén de certificados de Windows los certificados raíz "ISRG Root X1" e "ISRG Root X2", y el intermedio "Let's Encrypt R3" - enlace a su sitio oficial - https://letsencrypt.org/ certificados/

Copie de los comentarios: descargue el campo .der de la 1ra categoría, descargue, haga doble clic y siga el asistente para instalarlo.

over 4 years ago · Santiago Trujillo Report

0

Resolví el problema en mi máquina de Windows. Tenía que ver con el certificado DST Root CA X3 que expiraba de Let's Encrypt.

  1. Descargar https://letsencrypt.org/certs/lets-encrypt-r3.pem
  2. cambiar el nombre del archivo .pem a .cer
  3. haga doble clic e instale
  4. Reinicie su PC

Aún así, si no funciona

  1. Vaya a https://letsencrypt.org/certificates/
  2. Descargue ISRG Root X1, ISRG Root X2 (certificados raíz), Let's Encrypt R3 (certificados intermedios)
  3. Reinicie su PC
over 4 years ago · Santiago Trujillo Report

0

Encontré la solución en la comunidad mondodb.

Descargar https://letsencrypt.org/certs/lets-encrypt-r3.pem

  1. cambiar el nombre del archivo .pem a .cer
  2. haga doble clic e instale
  3. y luego intente ejecutar la aplicación, su problema de SSL se resolverá. Salud !!!

fuente: [https://www.mongodb.com/community/forums/t/keep-getting-serverselectiontimeouterror/126190/13][1]

Gracias a Aniket_Gole

over 4 years ago · Santiago Trujillo Report

0

Otra solución de la comunidad MongoDB. Súper fácil y funcionó para mí. Puede leer la solución completa aquí:

https://www.mongodb.com/community/forums/t/keep-getting-serverselectiontimeouterror/126190/

Esto es lo que funcionó para mí (Windows 11):

compruebe que dnspython, pymongo y certifi están instalados en su entorno virtual o instálelos mediante:

 pip install dnspython pymongo certifi

¿Puede usar la terminal/línea de comandos y ejecutar Python? En el entorno de Python, ¿puede ingresar y = ejecutar los siguientes comandos (cambie la contraseña según corresponda para su usuario en su clúster de Atlas):

 from pymongo import MongoClient import certifi s = MongoClient("mongodb+srv://m220student:m220password@cluster0.maiqr.mongodb.net", tlsCAFile=certifi.where())
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!