Как проверить цепочку сертификатов с помощью 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);    
}
  1. Это правильный способ добавить цепочку сертификатов в магазин?
  2. Есть ли лучший способ загрузить всю цепочку и несколько файлов CRL?
  3. Вышеуказанный код проверяет всю цепочку или только eecert?

1 ответ

Решение

После стольких исследований я придумал простой класс, который может проверять цепочку сертификатов с помощью CRL. Вот мой пост в блоге

Другие вопросы по тегам