Досвід застосування технології Рутокен для реєстрації та авторизації користувачів у системі (частина 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

Додати коментар або відгук