Добрый день!
Веб-служба WCF использует HTTPS с аутентификацией клиента по сертификату.
(решил запостить в этом разделе, т.к. сама проблема с Шарпеем и .NET'ом ИМХО никак не связана)
На стороне службы:
1. КриптоПро CSP 3.6 R2 со свежекупленной серверной лицензией
2. Sharpei
3. Самоподписанный криптопрошный сертификат (с закрытым ключом), сделанный с помощью csptest в хранилище "Личные" локального компьютера + он же в хранилище "Доверенные корневые центры сертификации" локального компьютера + корректно зарегистрирован с помощью netsh
4. Сертификат УЦ, выпустившего сертификат клиента - в хранилище "Доверенные корневые центры сертификации" локального компьютера
5. Установлен последний CRL от УЦ, выпустившего клиентский сертификат
6. Есть доступ через интернет к CRL Distribution Point, указанной в сертификате клиента; CRL браузером можно скачать
На клиенте:
1. КриптоПро CSP 3.6 R2 с обычной лицензией (не trial)
2. Sharpei
3. Сертификат клиента с EKU "1.3.6.1.5.5.7.3.2" (аутентификация клиента), выпущенный УЦ
4. Самоподписанный сертификат службы - в хранилище "Доверенные корневые центры сертификации" текущего пользователя
5. Сертификат УЦ, выпустившего клиентский сертификат - в хранилище "Доверенные корневые центры сертификации" текущего пользователя
Эксперимент №1:
Подключаемся клиентом веб-службы к endpoint веб-службы - сервер возвращает ошибку HTTP 403, на стороне клиента выбрасывается исключение, а в Event Log на стороне службы вот такое сообщение:
"КриптоПро TLS. Ошибка 0x80092012 при проверке сертификата клиента: Функция отзыва не смогла произвести проверку отзыва для сертификата."Эксперимент №2:
С клиента подключаемся браузером по https к metadata exchange endpoint (не требует аутентификации клиента) - все работает, страница открывается, IE доверяет веб-серверу и т.п.
Эксперимент №3:
Меняем в конфигах службы и клиента криптопрошные сертификаты на RSA-шные, строим аналогичную схему - все работает.
Эксперимент №4:
Специально написанным кодом с помощью X509Chain на машине веб-службы (из-под той же учетки) проверяем сертификат клиента =>
проверка успешна и в случае RevocationMode = X509RevocationMode.Online, и в случае RevocationMode = X509RevocationMode.Offline.
Т.е. доверие к сертификату клиента вроде как есть.
Скажите, пожалуйста, как победить ошибку 0x80092012 КриптоПро TLS?Отредактировано пользователем 21 августа 2011 г. 13:56:39(UTC)
| Причина: Не указана