Error en el módulo ssl de Python: AttributeError: el módulo ‘ssl’ no tiene el atributo ‘enum_certificates’
Estoy tratando de listar los certificados instalados en mi máquina utilizando Python. Estoy usando Python 3.6.8. Estoy utilizando el siguiente código. Funciona en Windows, pero falla en CentOS:
import ssl
from cryptography import x509
for store in ["CA", "ROOT", "MY"]:
for cert, encoding, trust in ssl.enum_certificates(store):
certificate = x509.load_der_x509_certificate(cert, backend=None)
print(certificate.issuer, certificate.not_valid_after)
El error en CentOS es:
AttributeError: el módulo 'ssl' no tiene el atributo 'enum_certificates'
Es extraño porque la documentación del módulo ssl dice que el método enum_certificates
fue agregado en la versión 3.4. Debería estar presente.
¿Cómo puedo listar los certificados instalados?
davy.ai
Desafortunadamente, el método
enum_certificates
no está disponible en todas las versiones del módulossl
de Python. Como se muestra en el mensaje de error, no está disponible en CentOS.Para listar los certificados instalados, en lugar del módulo
ssl
, se puede utilizar el paquetecertifi
.certifi
es un paquete de terceros de Python que contiene una colección de certificados raíz. A continuación, se muestra un ejemplo de cómo listar los certificados instalados utilizandocertifi
:La función
certifi.where()
devuelve la ruta al conjunto de certificados raíz del sistema, que debería incluir todos los certificados del sistema. El código luego carga los certificados del conjunto utilizando la funciónx509.load_der_x509_certificate()
del paquetecryptography
.El bucle
for
itera sobre cada certificado en el almacén de certificados e imprime el emisor y la fecha de caducidad de cada certificado.