[Python] [PYTHON] Leggere certificato x509
Valerio Pachera
sirio81 a gmail.com
Ven 5 Nov 2021 12:23:57 CET
Ciao a tutti, il mio obiettivo è ottenere la lista dei Subject
Alternative Name di un certificato.
X509v3 Subject Alternative Name:
DNS:nome1.domain.tld , DNS:nome2.domain.tld, DNS:nome3.domain.tld
Ho ottenuto un risultato parziale tramite:
---
#!/usr/bin/env python3
from pprint import pprint
from cryptography import x509
from cryptography.hazmat.backends import default_backend
with open('/tmp/file.cer') as f_cert:
pem_data = f_cert.read().encode('ascii')
cert = x509.load_pem_x509_certificate(pem_data, default_backend())
print(cert.subject)
---
Prendendo spunto da
https://stackoverflow.com/questions/16899247/how-can-i-decode-a-ssl-certificate-using-python
Guardando la documentazione
https://cryptography.io/en/latest/x509/reference/#x-509-certificate-object
o anche semplicemente tramite
print(help(cert))
vedo l'elenco delle "proprietà" che posso richiamare (non so bene come
riferirmi).
Ad esempio, potrei voler stampare il Common Name tramite
print(cert.subject)
Non so bene come interpretare l'output che ottengo:
<Name([<NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.3,
name=commonName)>, value='nomeprincipale.domain.tld')>])>
Non è una lista, stringa, tupla ...
1) Come posso ricavare/estrapolare il valore "nomeprincipale.domain.tld" ?
Rispondere a questa domanda sicuramente mi aiuta, ma non ho ancora
raggiunto il mio scopo: ottenere la lista dei Subject Alternative
Name.
Non vedo la possibilità di richiamare qualcosa tipo
cert.subject_alternative_name
2) Come posso ricavare i Subject Alternative Names?
Maggiori informazioni sulla lista
Python