| ||||
| ||||
Ответьте пожалуйста, каким образом (программно) можно обновить просроченный сертификат. Спасибо. | ||||
Ответы: | ||||
| ||||
Можно пояснить - имеется в виду ситуация, когда пользователь получил новый сертификат взамен просроченного и требуется его установить и настроить? Или сама программа должна формировать запрос на новый сертификат, отправлять его на обработку и устанавливать? Если второе - вряд ли целесообразно это автоматизировать, т.к. не будет обеспечена юридическая сторона - непонятно, какому человеку будет принадлежать новый секретный ключ и сертификат. | ||||
| ||||
"сама программа должна формировать запрос на новый сертификат, отправлять его на обработку и устанавливать". часто владельцы сертификатов поздно спохватываются. вот и возник вопрос как технически обновить просроченный сертификат без регистрации нового пользователя. | ||||
| ||||
При формировании запроса на сертификат делается секретный ключ и записывается в новый ключевой контейнер. Собственно, это достаточно тяжело автоматизировать: нужно подключить носитель (если он съёмный), задать пароль или ПИН-код. Точнее говоря, основная сложнось - чтобы пользователь (человек) признал новый ключевой контейнер своим. Ведь он сделан без его участия (и возможно, даже вообще при отсутствии пользователя). Технически запрос делается чаще всего с помощью Xenroll (метод CreatePKCS10). Далее запрос отправляется на обработку в ЦС. Выпущенный сертификат устанавливается им же (метод InstallPKCS7). Есть готовые утилиты, например, cryptcp - см. http://www.cryptopro.ru/CryptoPro/products/cryptcp/default.htm Если для выпуска сертификатов используется "КриптоПро УЦ" - можно применить функции интерфейса внешних приложений для создания запроса, отправки его, получения и установки. См. "Руководство программиста" из состава документации на УЦ. | ||||
| ||||
Василий, сама суть проблемы заключается в следующем: 1. Допустим есть ключевой контейнер и связанный с ним просроченный сертификат (предположим на неделю). 2. Создаем самоподписанный запрос CreatePKCS10(...). 3. При попытке подписать запрос oSignedData.Sign(...) просроченным сертификатом разумеется возникает ошибка. И дело до отправки запроса на обновление не доходит. (Откат даты у клиента при вызове функции также не спасет -- на сервере дату же не изменишь). В общем должно быть какое-то решение. Подскажите в каком направлении двигаться. | ||||
| ||||
Увы, если сертификат просрочен - то подпись, сделанная на нём после истечения срока - недействительна. В этом случае применительно к КриптоПро УЦ есть вариант - создать "маркер временного доступа" ( идентификатор и пароль) для доступа на страницу веб-интерфейса ЦР для создания запроса на новый сертификат. Но, в этом случае нужно будет заявление от пользователя (на получение нового сертификата) в бумажном виде, т.к. электронной подписью он не сможет подписать PKCS10. | ||||
| ||||
Василий, спасибо за ответ. Скажите есть возможность обновить сертификат используя маркер временного доступа, но не через веб-интерфейс, а интерфейс внешних приложений? | ||||
| ||||
? | ||||
| ||||
Нет. Через ИВП нельзя получить доступ к ЦР по маркеру временного доступа. Собственно говоря, для существующего пользователя с просроченным сертификатом маркер временного доступа делает Оператор (Администратор) ЦР на своём АРМе и передаёт его пользователю (например, есть возможность автоматической отправки e-mail с ЦР пользователю). Представить себе, что внешний софт будет читать почту пользователя, выделять оттуда идентификатор и пароль, потом использовать их для установления соединения к веб-интерфейсу ЦР (и всё это без участия пользователя) - достаточно тяжело... На сервере ЦР есть возможность настроить рассылку передупреждений о скором истечении срока действия секретного ключа. В шаблон письма можно включить инструкции по смене. Пользователю фактически надо зайти на свою страницу (ссылку также можно включить в письмо - https://имя_сервера_ЦР/UI/user/user.asp) и нажать кнопочку "Новый сертификат". Если на ЦР настроено, что не требуется подтверждение Оператора (Администратора) - то пользователь сразу сможет установить свой новый сертификат. Если требуется - то нужно будет зайти по ссылке ещё раз (после получения по e-mail письма с подтверждением того, что сертификат выпущен). | ||||
| ||||
Хорошо, допустим пользователь получил ID и пароль, создал запрос на обновление. Тогда для программной установки сертификата потребуется связать ожидаемый сертификат и созданный веб-интерфейсом контейнер. Есть ли информация по которой можно определить, что контейнер был создан веб-интерфейсом. Где находится связка контейнера с запросом и ожидаемым сертификатом, в контейнере? Как ее получить? Спасибо. | ||||
| ||||
В хранилище запросов имеется вся нужная информация. При установке сертификата методом (XEnroll) InstallPKCS7 будет автоматически найден запрос и сертификат установится с привязкой к ключу в контейнере. Только нужно учесть, что данное хранилище - индивидуальное для каждого пользователя Win. | ||||
| ||||
ok. Спасибо. | ||||