Dzień dobry!
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 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.filecms — 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:
- Otrzymujemy żądanie utworzenia certyfikatu i zapisujemy je w pliku user.csr.
- 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.
- Odczytujemy plik user.crt i wysyłamy go do klienta.
- Autoryzacja użytkownika:
- Otrzymujemy podpisane dane od klienta i zapisujemy je w pliku authenticate.cms.
- 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.
- Odczytujemy data.file i sprawdzamy te dane pod kątem ważności. Co dokładnie sprawdzić, opisano . 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
