Одному из сотрудников нашей компании понадобилось зарегистрироваться на портале Госуслуг. Как известно, на портале сейчас есть возможность входить в личный кабинет по логину/паролю, либо по электронной подписи. Вариант с логином/паролем был отброшен в силу профессиональной паранойи, и поехал сотрудник в УЦ Ростелекома — оператора системы — получать сертификат. В УЦ ему в качестве носителя электронной подписи/аппаратного СКЗИ не предложили Рутокен ЭЦП. В силу корпоративного патриотизма сотрудник решил не форсировать события, а попробовать-таки зайти на Госуслуги, используя для электронной подписи Рутокен ЭЦП.
Что из этого получилось, описано под катом.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/ac9/5f3/0ea/ac95f30ea78e6cdeefef40f9b1dadfac.png)
Задача разбилась на подзадачи:
С УЦ мы договорились довольно быстро. Один из основных наших партнеров, УЦ СКБ Контур, аккредитован в системе Госуслуг и согласился выдать нам сертификат по описанной схеме.
Для решения технических вопросов мы решили использовать Рутокен Плагин, который также работает через библиотеку PKCS#11 и совместим с плагином Госуслуг.
Для генерации ключа, создания запроса и записи сертификата мы сделали набор web-страниц, который условно назвали Центр регистрации. Этот Центр регистрации не требует серверной части, все операции осуществляются на клиенте. Для работы Центра регистрации требуется установка Рутокен Плагин.
Центр регистрации позволяет:
Ниже приведена инструкция по генерации ключа и формированию запроса на сертификат c помощью Центра регистрации:
1. Запустить Центр регистрации:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/361/ac8/bf3/361ac8bf3f16eb79e149a97755020803.png)
2. Подключить Рутокен ЭЦП к компьютеру, выбрать токен, ввести PIN-код:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/d89/a24/58c/d89a2458c16c77b7f892db1d7943e75a.png)
После выбора токена отобразится меню:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/143/e41/bb0/143e41bb0a8ba68ad6c72f2e48d07310.png)
3. Нажать кнопку “Создать ключ”:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/002/4a8/884/0024a8884d09906e6aadfc89afead7f9.png)
Затем нажать «Создать запрос на этом ключе»
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/908/104/203/90810420374d5bc4bbf089a4b3e10fc3.png)
4. На странице создания запроса выбрать шаблон “СКБ Контур, для физлиц”, заполнить поля запроса, нажать кнопку “Создать запрос” (все поля должны быть заполнены, в данном случае реализован тестовый пример):
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/eb9/24d/0d9/eb924d0d9ec3196a9a4223bf8cc701a6.png)
5. Скопировать запрос для отправки его в УЦ:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/137/55d/a50/13755da50fabb7970c2f1deaf7ed5c28.png)
6. Сгенерированный ключ появился в списке:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/b54/ccc/1ef/b54ccc1ef32873a0ff855ae1758d3b27.png)
После отправки запроса сотруднику пришло уведомление о необходимости явиться в офис УЦ для подтверждения личности.
После прохождения проверки наш сотрудник получил сертификат.
1. Выбрать в списке токен, нажать кнопку “Импортировать сертификат”, полученный сертификат вставить в форму ввода, нажать кнопку “Импортировать”:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/527/3bb/895/5273bb895bad935a2772496e735da2b0.png)
2. При импорте выбрать тип сертификата “Пользовательский”:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/a6b/a74/96e/a6ba7496e06d9e2ec081152ae1381a68.png)
3. После этого появится окно с отображением сертификата и сообщением об успешном импорте на Рутокен ЭЦП (на картинке приведен пример импорта тестового сертификата, полученного в тестовом УЦ):
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/927/912/861/92791286113c242930ff9861d45f85f6.png)
4. Сертификат отобразится в списке:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/c87/c4d/2ed/c87c4d2edc9956c4dad069d9751ea257.png)
Сотрудник установил плагин Госуслуг, и ему удалось войти на портал по ЭП.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8f0/f13/c2c/8f0f13c2cf843a628d74ea51e787ffa3.jpg)
Выбираем “По электронной подписи”:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8be/51c/05e/8be51c05e9bed588c565e4970d2f0b76.jpg)
Выбираем сертификат:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/ff3/b65/b66/ff3b65b66d67dab86f900422f121b37b.jpg)
Вводим PIN-код:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/c88/be6/52f/c88be652fadb7b99878ed092e0a0bbba.jpg)
Попадаем в личный кабинет:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/f67/327/414/f673274145e8a29eb1e81ed1f9d9820e.jpg)
Концепция аппаратных СКЗИ, выполненных в различных форм-факторах, может быть востребована в массовых проектах, ориентированных на физлиц. В первую очередь за счет упрощения использования криптографии. Плагины, осуществляющие интеграцию браузера и аппаратных криптографических решений должны развиваться в сторону увеличения легкости установки и расширения возможностей. Тогда эти решения будут чаще и больше использовать.
Для того, чтоб была возможность выдачи квалифицированных сертификатов на Рутокен ЭЦП, которые можно было бы использовать с плагином Госуслуг или с Рутокен Плагин, сделана локальная версия Центра регистрации, ее можно использовать непосредственно в точках выдачи сертификатов.
Что из этого получилось, описано под катом.
![](https://habrastorage.org/getpro/habr/post_images/ac9/5f3/0ea/ac95f30ea78e6cdeefef40f9b1dadfac.png)
- На портале Госуслуг для проведения ЭП используется специальный браузерный плагин, который достаточно универсален. В качестве средств ЭП он умеет “подцеплять” как аппаратные СКЗИ, так и программные криптопровайдеры.
Рутокен ЭЦП в этом плагине поддерживается. - Поддерживается Рутокен ЭЦП через нашу библиотеку, реализующую стандарт PKCS#11.
- Процедура входа в личной кабинет на портале Госуслуг по ЭП представляет собой подпись случайных данных, отправляемых сервером. Подпись формируется в формате PKCS#7. Для аутентификации пользователя сервер использует информацию из сертификата X.509, а успешная проверка подписи подтверждает наличие у пользователя закрытого ключа, соответствующего сертификату.
- Для того чтобы сервер принял пользовательский сертификат, тот должен быть усиленным квалифицированным.
Задача разбилась на подзадачи:
- Сгенерировать ключ на Рутокен ЭЦП в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11
- Узнать, какие аккредитованные УЦ выдают квалифицированные сертификаты для физлиц
- Договориться с одним из этих УЦ, что он выдаст сертификат на основе запроса, сделанного удаленно.
- Сформировать правильный запрос на квалифицированный сертификат.
- Транспортировать запрос в УЦ.
- Получить сертификат и записать его на Рутокен ЭЦП в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11.
С УЦ мы договорились довольно быстро. Один из основных наших партнеров, УЦ СКБ Контур, аккредитован в системе Госуслуг и согласился выдать нам сертификат по описанной схеме.
Для решения технических вопросов мы решили использовать Рутокен Плагин, который также работает через библиотеку PKCS#11 и совместим с плагином Госуслуг.
Центр регистрации
Для генерации ключа, создания запроса и записи сертификата мы сделали набор web-страниц, который условно назвали Центр регистрации. Этот Центр регистрации не требует серверной части, все операции осуществляются на клиенте. Для работы Центра регистрации требуется установка Рутокен Плагин.
Центр регистрации позволяет:
- Просматривать ключевые пары и сертификаты на подключенных устройствах Рутокен ЭЦП (под просмотром ключевых пар понимается просмотр информации о них)
- Генерировать новую ключевую пару
- Формировать запрос в формате PKCS#10 для выбранной ключевой пары
- Формировать запросы по шаблону
- Импортировать сертификат на устройство
- Удалять сертификат с устройства
Генерация ключа и формирование запроса на сертификат
Ниже приведена инструкция по генерации ключа и формированию запроса на сертификат c помощью Центра регистрации:
1. Запустить Центр регистрации:
![](https://habrastorage.org/getpro/habr/post_images/361/ac8/bf3/361ac8bf3f16eb79e149a97755020803.png)
2. Подключить Рутокен ЭЦП к компьютеру, выбрать токен, ввести PIN-код:
![](https://habrastorage.org/getpro/habr/post_images/d89/a24/58c/d89a2458c16c77b7f892db1d7943e75a.png)
После выбора токена отобразится меню:
![](https://habrastorage.org/getpro/habr/post_images/143/e41/bb0/143e41bb0a8ba68ad6c72f2e48d07310.png)
3. Нажать кнопку “Создать ключ”:
![](https://habrastorage.org/getpro/habr/post_images/002/4a8/884/0024a8884d09906e6aadfc89afead7f9.png)
Затем нажать «Создать запрос на этом ключе»
![](https://habrastorage.org/getpro/habr/post_images/908/104/203/90810420374d5bc4bbf089a4b3e10fc3.png)
4. На странице создания запроса выбрать шаблон “СКБ Контур, для физлиц”, заполнить поля запроса, нажать кнопку “Создать запрос” (все поля должны быть заполнены, в данном случае реализован тестовый пример):
![](https://habrastorage.org/getpro/habr/post_images/eb9/24d/0d9/eb924d0d9ec3196a9a4223bf8cc701a6.png)
5. Скопировать запрос для отправки его в УЦ:
![](https://habrastorage.org/getpro/habr/post_images/137/55d/a50/13755da50fabb7970c2f1deaf7ed5c28.png)
6. Сгенерированный ключ появился в списке:
![](https://habrastorage.org/getpro/habr/post_images/b54/ccc/1ef/b54ccc1ef32873a0ff855ae1758d3b27.png)
После отправки запроса сотруднику пришло уведомление о необходимости явиться в офис УЦ для подтверждения личности.
После прохождения проверки наш сотрудник получил сертификат.
Импорт сертификата
1. Выбрать в списке токен, нажать кнопку “Импортировать сертификат”, полученный сертификат вставить в форму ввода, нажать кнопку “Импортировать”:
![](https://habrastorage.org/getpro/habr/post_images/527/3bb/895/5273bb895bad935a2772496e735da2b0.png)
2. При импорте выбрать тип сертификата “Пользовательский”:
![](https://habrastorage.org/getpro/habr/post_images/a6b/a74/96e/a6ba7496e06d9e2ec081152ae1381a68.png)
3. После этого появится окно с отображением сертификата и сообщением об успешном импорте на Рутокен ЭЦП (на картинке приведен пример импорта тестового сертификата, полученного в тестовом УЦ):
![](https://habrastorage.org/getpro/habr/post_images/927/912/861/92791286113c242930ff9861d45f85f6.png)
4. Сертификат отобразится в списке:
![](https://habrastorage.org/getpro/habr/post_images/c87/c4d/2ed/c87c4d2edc9956c4dad069d9751ea257.png)
Вход на портал Госуслуг
Сотрудник установил плагин Госуслуг, и ему удалось войти на портал по ЭП.
![](https://habrastorage.org/getpro/habr/post_images/8f0/f13/c2c/8f0f13c2cf843a628d74ea51e787ffa3.jpg)
Выбираем “По электронной подписи”:
![](https://habrastorage.org/getpro/habr/post_images/8be/51c/05e/8be51c05e9bed588c565e4970d2f0b76.jpg)
Выбираем сертификат:
![](https://habrastorage.org/getpro/habr/post_images/ff3/b65/b66/ff3b65b66d67dab86f900422f121b37b.jpg)
Вводим PIN-код:
![](https://habrastorage.org/getpro/habr/post_images/c88/be6/52f/c88be652fadb7b99878ed092e0a0bbba.jpg)
Попадаем в личный кабинет:
![](https://habrastorage.org/getpro/habr/post_images/f67/327/414/f673274145e8a29eb1e81ed1f9d9820e.jpg)
Вместо заключения
Концепция аппаратных СКЗИ, выполненных в различных форм-факторах, может быть востребована в массовых проектах, ориентированных на физлиц. В первую очередь за счет упрощения использования криптографии. Плагины, осуществляющие интеграцию браузера и аппаратных криптографических решений должны развиваться в сторону увеличения легкости установки и расширения возможностей. Тогда эти решения будут чаще и больше использовать.
Для того, чтоб была возможность выдачи квалифицированных сертификатов на Рутокен ЭЦП, которые можно было бы использовать с плагином Госуслуг или с Рутокен Плагин, сделана локальная версия Центра регистрации, ее можно использовать непосредственно в точках выдачи сертификатов.