Принятый ответ не совсем работает в libssl v0.9.8o.Хотя код соответствует этому в нижней части страницы в онлайн-документах на 2011/06/23:
http://www.openssl.org/docs/crypto/X509_VERIFY_PARAM_set_flags.html
Я использовал этот код:
X509_STORE *store = getStore();
// Enable CRL checking
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new();
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK);
X509_STORE_set1_param(store, param);
X509_VERIFY_PARAM_free(param);
Обратите внимание на использование X509_STORE вместо SSL_CTX для установки параметра.
РЕДАКТИРОВАТЬ: Еще одна вещь, которую следует отметить с OpenSSL и CRL.Если вы включите CRL для контекста, любой сертификат, у которого CA не имеет CRL, будет отклонен.Насколько я знаю, нет способа заставить OpenSSL применять CRL только к сертификатам из тех CA, которые перечислены в CRL, которые у него есть.
Я столкнулся с этой проблемой и потратил много времени, пытаясь выяснить,почему мой сертификат не был принят, когда он был совершенно действительным.Проблема заключалась в том, что я добавил CRL для одного CA, но не для другого.Все сертификаты от CA, которые не имели CRL, были отклонены.OpenSSL - это все или ничего в этом отношении.