Εμπειρία στη χρήση της τεχνολογίας Rutoken για εγγραφή και εξουσιοδότηση χρηστών στο σύστημα (μέρος 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 и проверяем эти данные на валидность. Что именно проверить описано στο πρώτο άρθρο. Если данные валидны, то авторизация пользователя считается успешной.

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

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

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

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο