03.08.2007 14:34:12Обновление сертификата Ответов: 11
Александр
Ответьте пожалуйста, каким образом (программно) можно обновить просроченный сертификат.

Спасибо.
 
Ответы:
03.08.2007 14:51:36Василий
Можно пояснить - имеется в виду ситуация, когда пользователь получил новый сертификат взамен просроченного и требуется его установить и настроить?
Или сама программа должна формировать запрос на новый сертификат, отправлять его на обработку и устанавливать?
Если второе - вряд ли целесообразно это автоматизировать, т.к. не будет обеспечена юридическая сторона - непонятно, какому человеку будет принадлежать новый секретный ключ и сертификат.
03.08.2007 15:16:15Александр
"сама программа должна формировать запрос на новый сертификат, отправлять его на обработку и устанавливать".

часто владельцы сертификатов поздно спохватываются.
вот и возник вопрос как технически обновить просроченный сертификат без регистрации нового пользователя.
03.08.2007 17:53:37Василий
При формировании запроса на сертификат делается секретный ключ и записывается в новый ключевой контейнер.
Собственно, это достаточно тяжело автоматизировать: нужно подключить носитель (если он съёмный), задать пароль или ПИН-код.
Точнее говоря, основная сложнось - чтобы пользователь (человек) признал новый ключевой контейнер своим. Ведь он сделан без его участия (и возможно, даже вообще при отсутствии пользователя).

Технически запрос делается чаще всего с помощью Xenroll (метод CreatePKCS10). Далее запрос отправляется на обработку в ЦС.
Выпущенный сертификат устанавливается им же (метод InstallPKCS7).

Есть готовые утилиты, например, cryptcp - см. http://www.cryptopro.ru/CryptoPro/products/cryptcp/default.htm


Если для выпуска сертификатов используется "КриптоПро УЦ" - можно применить функции интерфейса внешних приложений для создания запроса, отправки его, получения и установки. См. "Руководство программиста" из состава документации на УЦ.
03.08.2007 19:51:45Александр
Василий, сама суть проблемы заключается в следующем:
1. Допустим есть ключевой контейнер и связанный с ним просроченный сертификат (предположим на неделю).
2. Создаем самоподписанный запрос CreatePKCS10(...).
3. При попытке подписать запрос oSignedData.Sign(...) просроченным сертификатом разумеется возникает ошибка.
И дело до отправки запроса на обновление не доходит.
(Откат даты у клиента при вызове функции также не спасет -- на сервере дату же не изменишь).

В общем должно быть какое-то решение. Подскажите в каком направлении двигаться.

05.08.2007 0:28:12Василий
Увы, если сертификат просрочен - то подпись, сделанная на нём после истечения срока - недействительна.
В этом случае применительно к КриптоПро УЦ есть вариант - создать "маркер временного доступа" ( идентификатор и пароль) для доступа на страницу веб-интерфейса ЦР для создания запроса на новый сертификат. Но, в этом случае нужно будет заявление от пользователя (на получение нового сертификата) в бумажном виде, т.к. электронной подписью он не сможет подписать PKCS10.
06.08.2007 12:32:46Александр
Василий, спасибо за ответ. Скажите есть возможность обновить сертификат используя маркер временного доступа, но не через веб-интерфейс, а интерфейс внешних приложений?
08.08.2007 11:04:41Александр
?
08.08.2007 12:35:06Василий
Нет. Через ИВП нельзя получить доступ к ЦР по маркеру временного доступа.
Собственно говоря, для существующего пользователя с просроченным сертификатом маркер временного доступа делает Оператор (Администратор) ЦР на своём АРМе и передаёт его пользователю (например, есть возможность автоматической отправки e-mail с ЦР пользователю).
Представить себе, что внешний софт будет читать почту пользователя, выделять оттуда идентификатор и пароль, потом использовать их для установления соединения к веб-интерфейсу ЦР (и всё это без участия пользователя) - достаточно тяжело...

На сервере ЦР есть возможность настроить рассылку передупреждений о скором истечении срока действия секретного ключа. В шаблон письма можно включить инструкции по смене. Пользователю фактически надо зайти на свою страницу (ссылку также можно включить в письмо - https://имя_сервера_ЦР/UI/user/user.asp) и нажать кнопочку "Новый сертификат". Если на ЦР настроено, что не требуется подтверждение Оператора (Администратора) - то пользователь сразу сможет установить свой новый сертификат. Если требуется - то нужно будет зайти по ссылке ещё раз (после получения по e-mail письма с подтверждением того, что сертификат выпущен).
08.08.2007 15:15:32Александр
Хорошо, допустим пользователь получил ID и пароль, создал запрос на обновление. Тогда для программной установки сертификата потребуется связать ожидаемый сертификат и созданный веб-интерфейсом контейнер. Есть ли информация по которой можно определить, что контейнер был создан веб-интерфейсом. Где находится связка контейнера с запросом и ожидаемым сертификатом, в контейнере? Как ее получить?

Спасибо.
08.08.2007 15:25:22Василий
В хранилище запросов имеется вся нужная информация.
При установке сертификата методом (XEnroll) InstallPKCS7 будет автоматически найден запрос и сертификат установится с привязкой к ключу в контейнере.

Только нужно учесть, что данное хранилище - индивидуальное для каждого пользователя Win.
08.08.2007 15:29:19Александр
ok. Спасибо.