Вот подпись pkcs7_verify
, взятая из библиотеки C / C ++:
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
BIO *indata, BIO *out, int flags);
Может использоваться с блоком PKCS7 (p7) и секцией, которую предполагается подписать (в данных).
Интересно, как эта проверка обнаруживает, был ли отозван один из сертификатов в цепочке ...
Из того, что я знаю, проверка отзыва может быть выполнена, только если сопоставление с другим сертификатом за пределамиБлок pkcs7, помеченный как отозванный.
Я проверил аргументы функции и нашел один, представляющий список доверенных сертификатов хранилища.
Этот аргумент должен содержать сертификат, который является эмитентом самого нижнего сертификата в цепочке pkcs7.Таким образом, я предполагаю, что если этот сертификат помечен как отозванный, мы не пройдем проверку по revocation
причине ...
Но что, если другой сертификат выше в цепочке будет отозван?как я могу предоставить эту информацию pkcs7_verify
?
Или, возможно, есть другой метод openssl, который определяет, будет ли сертификат в цепочке аннулирован или нет?
ОБНОВЛЕНИЕ:
Я нашел альтернативный способ проверить, отозван ли сертификат.В приведенном ниже примере мы видим, что revoked_test.pem
идентифицируется как отозванное путем сопоставления со списком в crl_chain.pem
.Как я могу сделать это программно?
openssl verify -crl_check -CAfile crl_chain.pem revoked-test.pem
revoked-test.pem: OU = Domain Control Validated, OU = PositiveSSL, CN = xs4all.nl
error 23 at 0 depth lookup:certificate revoked
спасибо