Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.04.2008(UTC) Сообщений: 157 Откуда: Новороссийск
Поблагодарили: 14 раз в 8 постах
|
Если подписываю с использованием CAPICOM, то при выполнении AcceptRequest выдает ошибку -2147220990 Если подписываю с использованием CryptSignMessage то при выполнении AcceptRequest выдает ошибку встречено не верное значение тега.
В обоех случаях проверял подпись АРМ РКС. В обоех случаях подпись верна.
Куда рыть дальше подскажите?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Так сложно сказать. Можно взглянуть на оба подписанных запроса, которые передаются в AcceptRequest? |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.04.2008(UTC) Сообщений: 157 Откуда: Новороссийск
Поблагодарили: 14 раз в 8 постах
|
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Разобрались. Вкратце: AcceptRequest (и SubmitRequest) предназначен для обновления сертификатов пользователей. В случае же выпуска первого сертификата для пользователя нужно использовать AcceptFirstRequest (SubmitFirstRequest, CreateCertRequest), что и решило проблему. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.03.2011(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз
|
Изучил вдоль и поперек Руководство программиста, так и не понял, какими методами ИВП КриптоПро УЦ 1.4 и в какой последовательности сформировать запрос на сертификат для уже зарегистрированного пользователя от имени администратора, а не самого пользователя?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:от имени администратора SubmitFirstRequest - отправить на сервер AcceptFirstRequest - принять |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.03.2011(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз
|
Спасибо. Вопрос по методу SubmitFirstRequest: Где для этого метода взять первый параметр RegRequestID?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Вы создаете сертификат для какого-то пользователя ЦР. У этого пользователя есть, по крайней мере, запрос на регистрацию. Вот RegRequestID как раз идентификатор этого запроса в БД ЦР. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.03.2011(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз
|
У меня задача следующая: По электронной почте поступает самоподписанный запрос PKCS#10 на изготовление пользователю сертификата, подписанный доверенным лицом и упакованный в файл - контейнер PKCS#7. Необходимо: 1. убедиться, что запрос подписан доверенным лицом и подпись верна; с помощью интерфейса внешних приложений (ИВП) центра регистрации КриптоПро УЦ: 2. если пользователь, указанный в PKCS#10 еще не зарегистрирован на центром регистрации, то зарегистрировать его; 3. изготовить сертификат по запросу PKCS#10
Насколько понял, Вы предлагаете воспользоваться методом GetRegRequestsListMtoN, чтобы найти определенного пользователя по фильтру "Subject" и получить RegRequestID пользователя из результата этого метода. Возникает только трудность получения значения "Subject" из PKCS#10, я это делать не умею.
Но мне посчастливилось обнаружить недокументированное свойство метода ObjCertRequest.SubmitFirstCertRequest (RegRequestID, Request, Unused, AdditionalInfo) интерфейса внешних приложений центра регистрации КриптоПро УЦ: Если в качестве первого параметра RegRequestID задать пустую строку, то будет произведен поиск в базе центра регистрации по информации, содержащейся в запросе. Если пользователь найден, запрос на сертификат ставится в очередь, иначе выдается ошибка №-2147220990 (0x80040202); Unused - обязательно должен иметь логическое значение (True или Fals), иначе выдастся ошибка несоответствия типов.
Таким образом, решение свелось к следующей последовательности: 1. проверить подпись доверенного лица в PKCS#7; 2. получить PKCS#10 из PKCS#7; 3. вызвать метод RequestID=ObjCertRequest.SubmitFirstCertRequest ("", RequestPKCS#10, "", "") 4. в случае ошибки №-2147220990 зарегистрировать пользователя: RegRequestID = ObjRegistration.CreateRequestByAdmin (RequestPKCS#10, "", "", "") ObjRegistration.AcceptRequest RequestID RequestID=ObjCertRequest.SubmitFirstCertRequest ("", RequestPKCS#10, "", "") 5. сформировать RequestPKCS#7 - одобрение запроса, подписав PKCS#10 6. одобрить выпуск сертификата методом ObjCertRequest.AcceptFirstRequest RequestID, RequestPKCS#7 7. получить выпущенный сертификат методом ObjCertRequest.GetCertificateInfo (RequestID)
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close