25.12.2001 15:43:45CRL Ответов: 1
Weasel
Я пытаюсь собрать тестовую систему с микрософтовским CA. Есть сертификаты сервера и клиента, они между собой связываются по TLS с использованием Ваших примеров.

Я предположим, клиентский сертификат скомпрометирован. Я его отправляю в Revoked, публикую CRL. Запускаю пример - работает.

Хорошо, скачиваю CRL на сервер, инсталлирую. Запускаю пример - работает. А не должен, клиентский сертификат то скомпрометирован !

Ошибка где-то в моих действиях, или ваш стандартный пример просто не учитывает CRL ?
Если ошибка - то как делать правильно? Если пример не учитывает CRL - как его научить ?

Спасибо.
 
Ответы:
25.12.2001 21:29:32Serge3
Здравствуйте,

> Ошибка где-то в моих действиях, или ваш стандартный пример просто не учитывает CRL ?
> Если ошибка - то как делать правильно? Если пример не учитывает CRL - как его научить ?

В примере не заказывается анализ CRL.
В функции WebServer.c:443!VerifyClientCertificate

if(!CertGetCertificateChain(
NULL,
pServerCert,
NULL,
pServerCert->hCertStore,
&ChainPara,
CERT_CHAIN_CACHE_END_CERT,
NULL,
&pChainContext))
{
Status = GetLastError();
printf("Error 0x%x returned by CertGetCertificateChain!\n", Status);
goto cleanup;
}

--------------------------------------------------------------------------------

К флажку CERT_CHAIN_CACHE_END_CERT надо бы что-нибудь добавить...


--------------------------------------------------------------------------------

Flag Meaning
CERT_CHAIN_REVOCATION_CHECK_END_CERT Revocation checking is done on the end certificate and only the end certificate.
CERT_CHAIN_REVOCATION_CHECK_CHAIN Revocation checking is done on all of the certificates in every chain.
CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT Revocation checking in done on all certificates in all of the chains except the root certificate.