para - openssl softpedia
¿Cómo cargar la ruta CRL en openssl 1.0.1? (1)
desde que actualicé a openssl 1.0.1 la funcionalidad de verificación de revocación en mi aplicación está rota. Con la ayuda de "apps / verfiy.c" descubrí que la carga de archivos CRL ha cambiado, lo que hice hasta ahora:
X509_LOOKUP *lookup;
const char *crl_path = "/path/to/crls"
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new();
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK);
SSL_CTX_set1_param(ctx, param);
lookup = X509_STORE_add_lookup(ctx->cert_store, X509_LOOKUP_hash_dir());
if (lookup == NULL) {
return "CRL path initialization error: X509 lookup initialization failed.";
}
if(!X509_LOOKUP_add_dir(lookup, crl_path, X509_FILETYPE_PEM)) {
return "CRL path initialization error: path addition failed.";
}
X509_VERIFY_PARAM_free(param);
Al hacerlo, siempre obtengo el error "no se puede cargar el certificado CRL".
Sin embargo, en "apps / verify.c", los archivos CRL se cargan uno a la vez mediante el siguiente código:
STACK_OF(X509_CRL) *crls;
char *crlfile = "/path/to/single/crl"
crls = load_crls(bio_err, crlfile, FORMAT_PEM, NULL, e, "other CRLs");
X509_STORE_CTX_set0_crls(csc, crls);
¿Alguien sabe cómo los archivos CRL todavía se pueden cargar mediante el uso de rutinas de búsqueda (por ejemplo, X509_LOOKUP_add_dir) y todos a la vez mediante la especificación de una ruta CRL?
Conozco algunas formas de agregar el archivo CRL al método 1 de la tienda: use este archivo API x509_vfy.h. int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type);
aquí tipo puede ser cualquiera de los siguientes valores
X509_FILETYPE_PEM - para el archivo CRL codificado PEM / B64
X509_FILETYPE_ASN1 - para los archivos CRL codificados DER
Método 2
paso 1 .convertir el archivo en formato X509_CRL (Para convertir use cualquiera de las siguientes API del archivo X509.h
:
//If the CRL file is DER encoded
X509_CRL *d2i_X509_CRL_fp(FILE *fp,X509_CRL **crl);
//If the CRL file is PEM encoded
PEM_read_X509_CRL_fp();
)
paso 2: crea una pila de CRL
STACK_OF (X509_CRL) mCRLStack;
paso 3 :
X509_STORE_CTX_set0_crls(lStoreCtx,mCRLStack);
/* or */
lStoreCtx->crls = mCRLStack;