Некоторое время назад возникла необходимость в рамках проекта ограничить одновременное число компьютеров, имеющих доступ к web-приложению, работающему в рамках локальной сети заказчика.
Решение использовать аппаратные USB-токены для идентификации компьютера пришло само собой. Выбор остановился на Рутокен ЭЦП: работает без драйверов, для работы в Web-приложении необходим лишь плагин для браузера, выпускаемый разработчиком. Поскольку токен должен идентифицировать компьютер, а не пользователя, работа с ним должна быть полностью «прозрачной»: если он есть, то система просто молча работает, не задавая пользователю лишних вопросов.
Было принято решение: при логине в систему подписывать идентификационные данные пользователя неквалифицированной подписью сертификата, хранящегося на Рутокене, средствами Рутокен-плагина, а на сервере осуществлять проверку. После успешного входа средствами плагина же проверять физическое наличие того самого токена, а при его отсутствии выполнять выход из системы. В рамках упомянутого проекта этого было достаточно.
Возникает необходимость создания своего Удостоверяющего Центра (УЦ) для обмена подписанными сообщениями, а точнее, для передачи подписанных сообщений с клиента на сервер. Клиентские сертификаты должны быть расположены на USB-токенах в контейнерах закрытых ключей, а проверка подписи должна выполняться на сервере средствами OpenSSL
Итак, задача: установка и настройка на Linux-сервере УЦ. Развертывание клиентских сертификатов, идентифицирующих компьютеры, на USB-токенах.
Для её решения понадобятся:
Решение использовать аппаратные USB-токены для идентификации компьютера пришло само собой. Выбор остановился на Рутокен ЭЦП: работает без драйверов, для работы в Web-приложении необходим лишь плагин для браузера, выпускаемый разработчиком. Поскольку токен должен идентифицировать компьютер, а не пользователя, работа с ним должна быть полностью «прозрачной»: если он есть, то система просто молча работает, не задавая пользователю лишних вопросов.
Было принято решение: при логине в систему подписывать идентификационные данные пользователя неквалифицированной подписью сертификата, хранящегося на Рутокене, средствами Рутокен-плагина, а на сервере осуществлять проверку. После успешного входа средствами плагина же проверять физическое наличие того самого токена, а при его отсутствии выполнять выход из системы. В рамках упомянутого проекта этого было достаточно.
Возникает необходимость создания своего Удостоверяющего Центра (УЦ) для обмена подписанными сообщениями, а точнее, для передачи подписанных сообщений с клиента на сервер. Клиентские сертификаты должны быть расположены на USB-токенах в контейнерах закрытых ключей, а проверка подписи должна выполняться на сервере средствами OpenSSL
Итак, задача: установка и настройка на Linux-сервере УЦ. Развертывание клиентских сертификатов, идентифицирующих компьютеры, на USB-токенах.
Для её решения понадобятся:
- OpenSSL 1.1.0 и выше, с поддержкой алгоритмов ГОСТ
- Рутокен ЭЦП
- модуль интеграции с OpenSSL с сайта разработчика, библиотеку PKCS#11, а также утилита для администрирования токена (rtAdmin)
- установленные пакеты opensc, pcsc-lite-ccid