Doświadczenie w zastosowaniu technologii Rutoken do rejestracji i autoryzacji użytkowników w systemie (część 3)

Dzień dobry!

W poprzedniej części z powodzeniem stworzyliśmy nasz własny urząd certyfikacji. Jakie korzyści może przynieść w naszym przypadku?

Dzięki lokalnemu urządzeniu certyfikacji możemy wydawać certyfikaty oraz przeprowadzać weryfikację podpisów oparte na tych certyfikatach.

Podczas wydawania certyfikatu użytkownikowi, urząd certyfikacji wykorzystuje specjalne zapytanie o wydanie certyfikatu Pkcs#10 w formacie pliku '.csr'. To zapytanie zawiera zakodowaną sekwencję, którą urząd certyfikacji potrafi poprawnie zinterpretować. Zapytanie zawiera zarówno klucz publiczny użytkownika, jak i dane do stworzenia certyfikatu (asocjacyjną tablicę z danymi o użytkowniku).

Jak uzyskać zapytanie o wydanie certyfikatu, omówimy w następnym artykule, a w tym chcę przedstawić podstawowe komendy urządzenia certyfikacji, które pomogą nam zrealizować nasze zadanie po stronie backendu.

Zatem, na początku musimy stworzyć certyfikat. Użyjemy do tego komendy:

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

ca — komenda openSSL, która odnosi się do urządzenia certyfikacji,
-batch — wyłącza zapytania potwierdzające przy formowaniu certyfikatu.
user.csr — zapytanie o utworzenie certyfikatu (plik w formacie .csr).
user.crt — certyfikat (wynik komendy).

Aby ta komenda zadziałała, urząd certyfikacji musi być skonfigurowany dokładnie tak, jak opisano w poprzedniej części artykułu. W przeciwnym razie konieczne będzie dodatkowe wskazanie lokalizacji głównego certyfikatu urządzenia certyfikacji.

Komenda weryfikacji certyfikatu:

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

cms — komenda openSSL, która służy do podpisywania, weryfikacji, szyfrowania danych i innych operacji kryptograficznych przy użyciu openSSL.

-verify — w tym przypadku wykonujemy weryfikację certyfikatu.

authenticate.cms — plik zawierający dane podpisane certyfikatem, który został wydany poprzednią komendą.

-inform PEM — używany format PEM.

-CAfile /Users/……/demoCA/ca.crt — ścieżka do głównego certyfikatu. (bez tego moja komenda nie zadziałała, chociaż ścieżki do ca.crt są zapisane w pliku openssl.cfg)

-out data.file — wysyłam odszyfrowane dane do pliku data.file.

Algorytm zastosowania centrum certyfikacji po stronie backendu jest następujący:

  • Rejestracja użytkownika:
    1. Otrzymujemy żądanie utworzenia certyfikatu i zapisujemy je w pliku user.csr.
    2. Zapisz pierwszą komendę z tego artykułu w pliku z rozszerzeniem .bat lub .cmd. Uruchamiamy ten plik z kodu, wcześniej zapisując żądanie utworzenia certyfikatu w pliku user.csr. Otrzymujemy plik z certyfikatem user.crt.
    3. Odczytujemy plik user.crt i wysyłamy go do klienta.

  • Autoryzacja użytkownika:
    1. Otrzymujemy podpisane dane od klienta i zapisujemy je w pliku authenticate.cms.
    2. Zapisujemy drugą komendę z tego artykułu w pliku z rozszerzeniem .bat lub .cmd. Uruchamiamy ten plik z kodu, wcześniej zapisując podpisane dane z serwera w authenticate.cms. Otrzymujemy plik z odszyfrowanymi danymi data.file.
    3. Odczytujemy data.file i sprawdzamy te dane pod kątem ważności. Co dokładnie sprawdzić, opisano w pierwszym artykule. Jeśli dane są ważne, to autoryzacja użytkownika uznawana jest za udaną.

Do realizacji tych algorytmów można użyć dowolnego języka programowania, który jest używany do pisania backendu.

W następnym artykule zajmiemy się tym, jak pracować z wtyczką Rutoken.

Dziękuję za uwagę!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster