Как проверить цепочку сертификатов с помощью CRL
У меня есть несколько цепочек сертификатов, и я хочу проверить их все по нескольким файлам CRL, размещенным в каталоге.
Это пример кода, который я пробовал. Я очень новичок в openssl, и я не уверен, проверяет ли этот код все сертификаты (целую цепочку) с CRL.
X509_STORE* store = X509_STORE_new();
X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK_ALL);
for each chain
{
STACK_OF(X509*) stack = sk_X509_new_null();
for(int index=0; cert_chain[index] != NULL; index++)
{
if(cert_chain[index]->type == 0)
{
//EE cert
eecert = cert_chain[index]->cert;
}
else
{
sk_X509_push(stack, cert_chain[index]->cert);
//get crl matching issuer
X509_Name* issuer = getIssuer(cert_chain[index]->cert);
X509_CRL* crl = getCRL(issuer);
//Any best way to add multiple crls at once or add location?
X509_STORE_add_crl(store, crl);
}
}
X509_STORE_CTX *store_ctx = X509_STORE_CTX_new();
X509_STORE_CTX_init(store_ctx, store, NULL, NULL);
X509_STORE_CTX_set_chain(ctx, stack);
X509_STORE_CTX_set_cert(store_ctx, eecert);
X509_verify_cert(store_ctx);
}
- Это правильный способ добавить цепочку сертификатов в магазин?
- Есть ли лучший способ загрузить всю цепочку и несколько файлов CRL?
- Вышеуказанный код проверяет всю цепочку или только eecert?
1 ответ
Решение
После стольких исследований я придумал простой класс, который может проверять цепочку сертификатов с помощью CRL. Вот мой пост в блоге