Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ильшат Абшарипов  
#1 Оставлено : 6 марта 2008 г. 13:36:33(UTC)
Ильшат Абшарипов

Статус: Участник

Группы: Участники
Зарегистрирован: 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 не влияет на проверку сертификата?
Offline tim128  
#2 Оставлено : 15 октября 2008 г. 13:31:25(UTC)
tim128

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.07.2008(UTC)
Сообщений: 6
Откуда: Видное

У меня аналогичная проблема, причем сетевой активности по ссылке указанной в поле "Точка распространения списка отзыва" не возникает. Что делать?
Offline tim128  
#3 Оставлено : 15 октября 2008 г. 13:33:35(UTC)
tim128

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.