2011-02-19 8 views
11

Estoy usando OpenSSL para verificar el certificado de un servidor. Dado que OpenSSL se envía sin ninguna CA raíz integrada, debemos distribuir el certificado de CA raíz con nuestro software (enlazamos estáticamente OpenSSL). Por lo general, la forma de hacerlo es distribuir un archivo de certificado en formato PEM y llamar a SSL_CTX_load_verify_locations.C++/OpenSSL: Usar CA raíz desde el búfer en lugar del archivo (SSL_CTX_load_verify_locations)

Sin embargo, esta función toma una ruta de archivo/directorio y lee los archivos de certificado raíz directamente desde el sistema de archivos. Realmente nos gustaría poder codificar el certificado en nuestro archivo binario en lugar de guardarlo en el sistema de archivos.

En otras palabras, nos gustaría tener una función como SSL_CTX_load_verify_locations que tome un X509 * en lugar de una ruta de archivo.

¿Algo como esto existe? o hay una manera fácil de hackear nosotros mismos? Parece que no podemos encontrar mucha información sobre esto.

¡Muchas gracias por cualquier sugerencia!

+0

¿Qué le impide guardar el certificado raíz codificado en el disco antes de llamar a SSL_CTX_load_verify_locations? –

+0

Nada lo impide: sin embargo, somos una aplicación de seguridad y nos preocupa la interferencia maliciosa. En particular, si es fácil localizar y sobreescribir nuestro archivo de certificado raíz, puede obstruir cualquiera de nuestras transacciones SSL. Seguiremos esta ruta si es necesario, pero sería genial poder compilar el certificado raíz en el propio binario. – DSII

+0

No es más seguro tener su CA raíz codificada que mantenerla en un archivo. –

Respuesta

18

La función SSL_CTX_get_cert_store() se puede utilizar para obtener un identificador para el almacén de certificados utilizados para la verificación (X509_STORE *), y la función X509_STORE_add_cert() (en openssl/x509_vfy.h), entonces se puede utilizar para agregar un certificado directamente a ese almacén de certificados.

+0

¡Perfecto! Muchas gracias; esto funciona maravillosamente Exactamente lo que estaba buscando. ¡Gracias! – DSII

Cuestiones relacionadas