Опыт применения технологии Рутокен для регистрации и авторизации пользователей в системе (часть 3)

Добрый день!

В предыдущей части мы успешно создали свой удостоверяющий центр. Чем вообще для наших целей он может быть полезен?

С помощью локального удостоверяющего центра мы можем производить выдачу сертификатов, а также осуществлять проверку подписи по этим сертификатам.

При выдаче сертификата пользователю удостоверяющий центр использует специальный запрос на выдачу сертификата Pkcs#10, имеющий формат файла ‘.csr’. Этот запрос содержит закодированную последовательность, которую удостоверяющий центр знает, как правильно распарсить. Запрос содержит как публичный ключ пользователя, так и данные для создания сертификата (ассоциативный массив с данными о пользователе).

Каким образом получить запрос на выдачу сертификата, мы рассмотрим в следующей статье, а в этой хочу привести основные команды удостоверяющего центра, которые помогут нам выполнить нашу задачу на стороне бекенда.

Итак, вначале мы должны создать сертификат. Для этого используем команду:

openssl ca -batch -in user.csr -out user.crt

ca — команда openSSL, которая относится к удостоверяющему центру,
-batch — отменяет запросы подтверждения при формировании сертификата.
user.csr — запрос на создание сертификата (файл формата .csr).
user.crt — сертификат (полученный результат команды).

Для того, чтобы эта команда отработала, удостоверяющий центр должен быть настроен в точности так, как описано в предыдущей части статьи. В противном случае придется дополнительно указывать место расположения корневого сертификата удостоверяющего центра.

Команда проверки сертификата:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.file

cms — команда openSSL, которая используется для подписи, проверки, шифрования данных и других криптографических операций с помощью openSSL.

-verify — в данном случае осуществляем проверку сертификата.

authenticate.cms — файл, содержащий подписанные данные сертификатом, который был выдан предыдущей командой.

-inform PEM — используется формат PEM.

-CAfile /Users/……/demoCA/ca.crt — путь к корневому сертификату. (без этого у меня команда не сработала, хоть и прописаны пути к ca.crt в файле openssl.cfg)

-out data.file — расшифрованные данные отправляю в файл data.file.

Алгоритм применения удостоверяющего центра на стороне бекенда следующий:

  • Регистрация пользователя:
    1. Получаем запрос на создание сертификата и сохраняем его в файл user.csr.
    2. Сохраняем первую команду данной статьи в файл расширением .bat или .cmd. Запускаем этот файл из кода, предварительно сохранив запрос на создание сертификата в файл user.csr. Получаем файл с сертификатом user.crt.
    3. Читаем файл user.crt и отправляем его на клиент.

  • Авторизация пользователя:
    1. Получаем подписанные данные с клиента и сохраняем их в файл authenticate.cms.
    2. Сохраняем вторую команду данной статьи в файл расширением .bat или .cmd. Запускаем этот файл из кода, предварительно сохранив подписанные данные с сервера в authenticate.cms. Получаем файл с расшифрованными данными data.file.
    3. Читаем data.file и проверяем эти данные на валидность. Что именно проверить описано в первой статье. Если данные валидны, то авторизация пользователя считается успешной.

Для реализации этих алгоритмов можно использовать любой язык программирования, который используют для написания бекенда.

В следующей статье мы будем разбираться с тем, как работать с Ретокен плагином.

Спасибо за внимание!

Источник: habr.com

Добавить комментарий