import OpenSSL
key = ...
signature = ...
data = ...
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, key)
OpenSSL.crypto.verify(x509, signature, data, 'sha1')
Finora, sono in grado di fare tutto questo senza problemi. Tuttavia, non sembra che questo sia abbastanza sicuro, dal momento che la chiave stessa mi viene data tramite un URL (che dovrei fidarmi *), e il metodo per costruire la firma è pubblicamente disponibile.Come autenticare una chiave pubblica con l'autorità di certificazione usando Python?
Quindi, supponiamo che la chiave sia verificata da "VeriSign Classe 3 Code Signing 2010 CA", qualcuno può dirmi come posso verificare che si tratti di un reclamo valido?
Suppongo di dover avere il certificato VeriSign localmente sulla mia macchina. Supponendo che io lo faccia, da dove vado?
Grazie!
* l'URL mi viene fornito come parametro in una richiesta JSON. Certo, l'URL sarà HTTPS e posso controllare il nome di dominio e tutto il resto. Ma sembra che dovrei fare controlli sul certificato stesso
Non convalida il carico utile, se questo è ciò che intendi. Non so esattamente quale sia la "chiave" che ottieni tramite questa connessione HTTPS. Ma posso assicurarti che questa chiave è trattata come qualsiasi altro dato di payload trasmesso via HTTPS. –