Статус: Участник
Группы: Участники
Зарегистрирован: 24.01.2008(UTC) Сообщений: 16 Откуда: Москва
|
Добрый день Пытаемся использовать такую схему: 1. Имеется два УЦ: Offline RootCA и Offline EntCA и один клиент (сертификат для него выдан EntCA). 2. У обоих УЦ CDP и AIA указаны такие, что недоступны с клиента. 3. После публикации EntCA его CRL вручную устанавливается на машине клиента. Проблема возникает, когда пытаемся проверить на клиенте его сертификат. Вне зависимости от того, отозван ли проверяемый сертификат клиента или не отозван, выдается ошибка CRYPT_E_REVOCATION_OFFLINE ("Сервер отзыва сертификатов недоступен"). Установка флага CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION, что вроде как должно предотвращать доступ к сетевым ресурсам, ничего не меняет. Код:
FillChar(RevStatus, SizeOf(CERT_REVOCATION_STATUS), 0);
RevStatus.cbSize := SizeOf(CERT_REVOCATION_STATUS);
if not CertVerifyRevocation(cnt_ENCODING_TYPE, CERT_CONTEXT_REVOCATION_TYPE, 1, @pSignerCert,
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION, nil, RevStatus) then
raise Exception.Create('Ошибка [' + IntToStr(GetLastError) + ']' )
Почему установка флага CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION не влияет на проверку сертификата?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.07.2008(UTC) Сообщений: 6 Откуда: Видное
|
У меня аналогичная проблема, причем сетевой активности по ссылке указанной в поле "Точка распространения списка отзыва" не возникает. Что делать?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.07.2008(UTC) Сообщений: 6 Откуда: Видное
|
Вот такой код: Код:
if not CryptVerifyDetachedMessageSignature(@VerifyParams, 0, pbSignature, cbSignature, 1, @rgpbToBeSigned, @rgcbToBeSigned, @pCertSigner) then
raise ECrypto.Create('CryptVerifyDetachedMessageSignature');
if CertVerifyTimeValidity(nil,pCertSigner[0]^.pCertInfo)<>0 then
raise ECrypto.Create('CertVerifyTimeValidity');
if CertGetNameString(pCertSigner[0],3,0,0,pbContent,cbContent)<2 then
raise ECrypto.Create('CertGetNameString');
status.cbSize := SizeOf(CERT_REVOCATION_STATUS);
rgpvContext[0]:=pCertSigner[0];
if not CertVerifyRevocation(X509_ASN_ENCODING + PKCS_7_ASN_ENCODING, CERT_CONTEXT_REVOCATION_TYPE, 1, @rgpvContext, 0, nil, @status) then
raise ECrypto.Create('CertVerifyRevocation');
Проверка подписи CryptVerifyDetachedMessageSignature проходит, CertVerifyTimeValidity проходит, CertGetNameString возвращает правильное имя сертификата из подписи, а CertVerifyRevocation возвращает CRYPT_E_REVOCATION_OFFLINE причем в сеть даже не пытается лезть. Сертификат выпущен тестовым УЦ КриптоПро, точка распространения CRL доступна. Должно это вообще работать с CryptoPro CSP? Отредактировано пользователем 15 октября 2008 г. 21:12:28(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close