Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Задание политики сертификата при создании запроса в веб-странице
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2010(UTC) Сообщений: 11
|
Здравствуйте. Я создаю запрос сертификата в веб-странице через VBScript/JavaScript, используя функционал CertEnroll. И всё было замечательно, пока я не столкнулся с необходимостью указывать в запросе OID в политику сертификата. Политику можно создать с помощью интерфейса ICertificatePolicies, но вот беда - объект IX509EnrollmentWebClassFactory, который обеспечивает всю веб-функциональность, не поддерживает данный интерфейс, т.е. создать объект политики не получается. Использование ключа - разрешает. Улучшенное использования ключа - тоже без проблем. А вот политику задать почему-то никак. В соответствии с 353 приказом ФНС все сертификаты, с которыми налоговые инспекции имеют дело, обязаны иметь так называемый OID "Квалификация подписи", причем этот OID необходимо помещать именно в политики сертификата. Но как же запросить такой сертификат через веб-страницу?  Может быть, есть обходные пути указания политики? Буду благодарен за любые подсказки.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2010(UTC) Сообщений: 11
|
Цитата:подсказка в MS Technet Хорошая статейка, запомнил на будущее, хотя предложенный там алгоритм я и так знал. Однако она навела меня на другую мысль - в статье не используется IX509EnrollmentWebClassFactory для создания криптообъектов. Зачем же его использую я? А потому что в MSDN английским по белому написано, что именно его надо использовать в веб-страницах. Более того, если подглядеть в исходный код страницы создания запроса в тестовом УЦ КриптоПро, то видно, что этот объект тоже используется. "Какого черта?", - подумал я, и удалил этот объект и стал создавать криптообъекты напрямую. И... о чудо! ICertificatePolicies, как и прочие, успешно создался и я получил запрос, а впоследствии сертификат - с политикой! Осталось загадкой, зачем тогда вообще нужен IX509EnrollmentWebClassFactory, если я в веб-странице и без него могу что хочу создавать. Тем не менее, проблема решилась. Kirill Sobolev, спасибо!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2010(UTC) Сообщений: 11
|
Итак, в Windows Vista/7/2008 создавать запросы сертификата в скриптах легко и приятно благодаря механизму IX509Enrollment со товарищи. А как насчет Windows XP? Там приходится довольствоваться грубой штукой XEnroll, которая не больно-то гибка в настройках. По сути всё действо сводится к вызову метода CreatePKCS10, куда передаётся Distinguished Name и набор OID'ов, которые попадут в "улучшенное использование ключа". Как же указать политику применения? Я пробовал дёргать XEnroll::addExtensionToRequest в различных вариациях, но успеха не добился - ошибок нет, но на сертификатах наличие команды не отражается, как будто XEnroll просто игнорирует этот вызов...
Как же все-таки указать политику применения сертификата в запросе, используя средства XEnroll? И возможно ли это вообще?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А в запросы попадает? Попробуйте вместо сreatePKCS10 createRequest с разными флагами. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2010(UTC) Сообщений: 11
|
В запросы тоже не попадает, если использовать CreatePKCS10. А вот метод CreateRequest порадовал - политика добавилась, правда в её значении был какой-то мусор. Поразмыслив, я решил сделать хитрость: в C++ через WinAPI создал политику сертификата, закодировал в ASN и результат записал в файл, после чего подсунул эти бинарные данные в метод addExtensionToRequest. Сработало! Путём такого чудовищного изврата получилось в XP через скрипт создать запрос с нужной политикой! Грязно, но работает, я уже совсем было обрадовался, однако не тут-то было...
В КриптоПро 3.6 всё работает, а вот в КриптоПро 3.0 беда - при попытке вызвать CreateRequest после дёрганья мышкой в ДСЧ и выбора пароля получаем сначала ошибку 0x80090020, а все последующие вызовы - 0x8009001A. Что на реестр, что на флешку. Причем, как выяснилось, от политики сертификата это никак не зависит, даже если её убрать. Просто - метод XEnroll::CreateRequest отказывается работать в 3.0. Перепробовал все варианты флагов - безрезультатно. Может я что-то еще упустил? Чего в 3.0 не хватает для счастья?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Может быть не хватает SP3 для CSP? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2010(UTC) Сообщений: 11
|
Точно! Сервиспак всё полечил, спасибо. Надо потом ещё посмотреть будет, как 2.0 себя ведёт...
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Задание политики сертификата при создании запроса в веб-странице
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close