2010-04-13 31 views
5

Sto cercando di capire come utilizzare m2crypto per convalidare la catena di attendibilità da una versione a chiave pubblica di un certificato X509 a una di un insieme di CA radice conosciute quando la catena può essere arbitrariamente lunga. Il modulo SSL.Context sembra promettente, tranne per il fatto che non sto facendo questo nel contesto di una connessione SSL e non riesco a vedere come viene utilizzata l'informazione passata a load_verify_locations.Come utilizzare m2crypto per convalidare una catena di certificati X509 in un'impostazione non SSL

In sostanza, sto cercando per l'interfaccia che è equivalente a: openssl verificare pub_key_x509_cert

C'è qualcosa di simile in M2Crypto?

Grazie.

+0

correlato http: // StackOverflow. com/q/4403012/4279 – jfs

risposta

1

C'è un patch che potrebbe necessitare di essere aggiornato leggermente, e avrebbe bisogno di test unitari per me per controllarlo. Contributi benvenuti!

Un altro modo complicato sarebbe creare una sessione SSL in memoria dove si esegue la convalida. Il Twisted wrapper funziona efficacemente in questo modo; Twisted funge da stupida pipa di rete senza sapere nulla dei dati, e M2Crypto crittografa/decrittografa i dati in memoria, facendo convalida dei certificati sul lato.

2

Ho modificato una patch M2Crypto diversa e con questo siamo in grado di verificare un certificato X509 contro una catena di CA, in più consente l'utilizzo di Certificate Revocation List (CRL) s.

Il cuore di consentire la verifica della catena con M2Crypto sta esponendo "verify_cert()" su X509_Store_Context. flusso di base è:

  1. Aggiungi la tua CA/CRL a un X509_Store
  2. Utilizzare un X509_Store_Context per verificare il certificato di interesse

mia patch migliora il supporto CRL oltre a permettere la verifica della catena. https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2

Stiamo utilizzando questa patch come parte di Pulp, abbiamo una pagina wiki di sotto del quale condivide alcune ulteriori informazioni su come stiamo facendo la verifica con una catena: https://fedorahosted.org/pulp/wiki/CertChainVerification

+0

Inoltre abbiamo una serie di richieste che mostrano la verifica della catena di base di seguito: http://git.fedorahosted.org/git/?p=pulp.git;a=blob;f=playpen/certs /chain_example/test_chain_verify.py;hb=HEAD Gli script per impostare i dati di test sono qui: http://git.fedorahosted.org/git/?p=pulp.git;a=tree;f=playpen/certs/chain_examp le; hb = HEAD –

+0

sembra che la tua patch non funzioni con openssl 0.9.8e. –

Problemi correlati