Я ссылался https://github.com/openssl/openssl/blob/master/apps/ocsp.c создать свою собственную реализацию OCSP и проверить базовый ответ OCSP, как только я получу его от респондента OCSP. Но почему-то, каждую итерацию, которую я запускаю, я получаю ошибку error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get issuer certificate
, Обратите внимание, что у меня есть данные X509 как сертификата, подлежащего проверке, так и сертификата эмитента, и я использую приведенный ниже код для проверки ответа:
OCSP_BASICRESP *br = OCSP_response_get1_basic(resp); // where resp is the response received.
STACK_OF(X509)* certs = sk_X509_new_null();
if (!sk_X509_push(certs, issuer)) // issuer X509 known
printf("Failed to add issuer");
X509_STORE* store = X509_STORE_new();
X509_LOOKUP *lookup;
lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir());
X509_STORE_add_cert(store,issuer);
ret_val = OCSP_basic_verify(br, certs, store, 0);
if (ret_val <= 0) {
printf("Response Verify Failure: %d", ret_val);
Для приведенного выше кода я продолжаю получать ret_val
как 0, и ошибка, упомянутая выше, регистрируется. Тем не менее я получаю правильный ответ от респондента OCSP, и состояние сертификата хорошее. Осталось только исправить звонок OCSP_basic_verify
, Может кто-нибудь указать, где я могу пойти не так? Благодарю.
Ответ в соответствии с @Castaglia.
Проблема заключалась в том, что OCSP_basic_verify продолжает цикл до тех пор, пока не найдет корневой CA. Но так как сертификат, который я добавил, был просто промежуточным сертификатом, проверка не прошла. Как только я добавил всю цепочку, вызов OCSP_basic_verify начал проходить через
Других решений пока нет …