2010-04-13 19 views
5

Estoy tratando de encontrar la manera de, utilizando M2Crypto, validar la cadena de confianza desde una versión de clave pública de un certificado X509 de nuevo a uno no SSL de un conjunto de CA raíz conocidas cuando la cadena puede ser arbitrariamente larga. El módulo SSL.Context parece prometedor, excepto que no estoy haciendo esto en el contexto de una conexión SSL y no puedo ver cómo se utiliza la información que pasa a load_verify_locations.¿Cómo se utiliza M2Crypto para validar una cadena de certificados X509 en un entorno

Esencialmente, estoy buscando la interfaz que es equivalente a: openssl verificar pub_key_x509_cert

¿Hay algo así en M2Crypto?

Gracias.

+0

http relacionados: // stackoverflow. com/q/4403012/4279 – jfs

Respuesta

1

Hay una patch que podría ser necesario actualizar un poco, y que necesitaría pruebas unitarias para que compruebe que en. Aportes de bienvenida!

Otra forma enrevesada sería la creación de una sesión SSL en memoria en el que hacer la validación. El Twisted wrapper funciona de esta manera; Twisted actúa como un canal de red tonto sin saber nada sobre los datos, y M2Crypto encripta/descifra los datos en la memoria, haciendo la validación del certificado en el lateral.

2

He modificado un parche M2Crypto diferente y con esto podemos verificar un Certificado X509 contra una cadena de CA, además de que permite el uso de la Lista de revocación de certificados (CRL) s.

El corazón de permitir la verificación de cadena con M2Crypto está exponiendo "verify_cert()" en un X509_Store_Context. flujo básico es:

  1. añaden sus CAS/CRL en un X509_Store
  2. Utilice un X509_Store_Context para verificar el certificado de interés

Mi parche mejora el soporte CRL, así como permitir la verificación de la cadena. https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2

Estamos utilizando este parche como parte de la pulpa, tenemos una página wiki por debajo del cual comparte alguna información más sobre cómo estamos haciendo la verificación con una cadena: https://fedorahosted.org/pulp/wiki/CertChainVerification

+0

Adicionalmente tenemos un conjunto de unittests que muestran la verificación de la cadena básica a continuación: http://git.fedorahosted.org/git/?p=pulp.git;a=blob;f=playpen/certs /chain_example/test_chain_verify.py;hb=HEAD Los scripts para configurar los datos de prueba están aquí: http://git.fedorahosted.org/git/?p=pulp.git;a=tree;f=playpen/certs/chain_examp le; hb = HEAD –

+0

parece que su parche no funciona con openssl 0.9.8e. –

Cuestiones relacionadas