Wzajemny TLS (mTLS) uwierzytelnianie tworzy bezpieczne ramy do uwierzytelniania zarówno użytkowników, jak i urządzeń IoT. Ten przewodnik przeprowadzi Cię przez proces wdrażania mTLS aby zapewnić bezpieczne dwukierunkowe uwierzytelnianie pomiędzy klientami i serwerami.
Skrócona instrukcja obsługi
Ustawianie wzajemnego TLS następuje prosty proces. Najpierw wygeneruj niezbędne certyfikaty serwera i klienta. Następnie skonfiguruj serwer tak, aby wymagał certyfikatów klienta. Następnie skonfiguruj klientów z ich certyfikatami i wdróż prawidłową walidację certyfikatu. Na koniec przetestuj połączenie, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.
Jednokierunkowy i wzajemny SSL /TLS Uwierzytelnianie
Jedną z definiujących cech SSL /TLS protokół to jego rola w uwierzytelnianiu anonimowych stron w sieciach komputerowych (takich jak internet). Kiedy odwiedzasz witrynę z zaufaną publicznie SSL /TLS świadectwoTwoja przeglądarka może zweryfikować, czy właściciel witryny pomyślnie zademonstrował kontrolę nad tą nazwą domeny zaufanemu zewnętrznemu urzędowi certyfikacji (CA), na przykład SSL.com. Jeśli weryfikacja się nie powiedzie, przeglądarka internetowa wyświetli ostrzeżenie, aby nie ufać tej witrynie. W przypadku większości aplikacji SSL /TLS używa tego rodzaju uwierzytelnianie jednokierunkowe serwera do klienta; anonimowy klient (przeglądarka internetowa) negocjuje szyfrowaną sesję z serwerem WWW, który prezentuje publicznie zaufany SSL /TLS certyfikat, aby zidentyfikować się podczas SSL /TLS uścisk ręki: Wzajemne uwierzytelnianie, w którym zarówno serwer i klient w SSL /TLS sesje są uwierzytelniane, jest również możliwe i może być bardzo przydatne w pewnych okolicznościach. W przypadku uwierzytelniania wzajemnego, gdy serwer zostanie uwierzytelniony podczas uzgadniania, wyśle plikCertificateRequest
wiadomość do klienta. Klient odpowie, wysyłając certyfikat do serwera w celu uwierzytelnienia:
Uwierzytelnianie klienta poprzez wzajemne TLS wymaga certyfikatu zawierającego Client Authentication (1.3.6.1.5.5.7.3.2)
Rozszerzone użycie klucza (EKU) jest zainstalowane na urządzeniu klienckim. Wszystkie z SSL.com Certyfikaty poczty e-mail, klienta i podpisywania dokumentów obejmują uwierzytelnianie klienta.
Szczegółowy przewodnik wdrożeniowy
Zrozumienie wzajemne TLS
tradycyjny TLS zapewnia uwierzytelnianie serwera i szyfrowanie, ale wzajemne TLS idzie dalej, wymagając od obu stron przedstawienia certyfikatów cyfrowych. Ta dwukierunkowa weryfikacja zapewnia autentyczność serwera, umożliwia uwierzytelnianie klienta, ustanawia zaszyfrowany kanał komunikacyjny i zapobiega atakom typu man-in-the-middle. Rezultatem jest wysoce bezpieczne połączenie odpowiednie dla wrażliwych aplikacji i komunikacji urządzeń IoT.
Wymagania wstępne
Przed rozpoczęciem implementacji upewnij się, że masz dostęp do OpenSSL lub podobnego narzędzia do zarządzania certyfikatami. Twój serwer internetowy musi obsługiwać TLSi będziesz potrzebować dostępu do Urząd certyfikacji (CA) lub możliwość utworzenia prywatnego CA. Twoi klienci muszą również obsługiwać uwierzytelnianie oparte na certyfikatach.
Krok 1: Generowanie i zarządzanie certyfikatami
Zacznij od wygenerowania niezbędnych certyfikatów do uwierzytelniania serwera i klienta. Konfiguracja certyfikatu serwera wymaga utworzenia klucza prywatnego, generowanie żądania podpisania certyfikatui podpisanie certyfikatu u Twojego urzędu certyfikacji.
# Generuj klucz prywatny serwera
openssl rodzaj -na zewnątrz klucz.serwera 2048
?
# Utwórz żądanie podpisania certyfikatu serwera (CSR)
openssl req -Nowy -klawisz klucz.serwera -na zewnątrz serwer.csr
?
# Podpisz certyfikat serwera za pomocą swojego CA
openssl x509 -wymaganie -W serwer.csr -AC ok. krt -Klucz ok. klucz -CAtwórz serial -na zewnątrz serwer.crt
W przypadku certyfikatów klientów należy postępować zgodnie z podobną procedurą, aby utworzyć ich unikalne dane uwierzytelniające:
# Wygeneruj klucz prywatny klienta
openssl rodzaj -na zewnątrz klucz.klienta 2048
?
# Utwórz klienta CSR
openssl req -Nowy -klawisz klucz.klienta -na zewnątrz klient.csr
?
# Podpisz certyfikat klienta
openssl x509 -wymaganie -W klient.csr -AC ok. krt -Klucz ok. klucz -CAtwórz serial -na zewnątrz klient.crt
Krok 2: Konfiguracja serwera
Serwer musi być skonfigurowany tak, aby wymagał i weryfikował certyfikaty klienta. Oto przykładowa konfiguracja dla Nginx:
serwer {
słuchać 443 ssl;
server_name przykład.com;
?
ssl_certificate /ścieżka do/serwerPlik .crt;
ssl_certificate_key /ścieżka do/serwer.klawisz;
certyfikat_klienta ssl /ścieżka/do/ca.crt;
ssl_weryfikuj_klienta na;
ssl_protokoły TLSv1.2 TLSv1.3;
ssl_ciphers WYSOKI:!ANULL:!MD5;
szyfry_serwera_preferującego_ssl na;
}
W przypadku serwerów Apache użyj następującej konfiguracji:
<VirtualHost *:443>
Nazwa serwera example.com
Silnik SSL on
SSLCertificateFile /ścieżka/do/serwera.crt
Plik klucza certyfikatu SSL /ścieżka/do/klucza.serwera
SSLCPlik certyfikatu /ścieżka/do/ca.crt
SSLWeryfikujKlienta wymagać
Głębokość weryfikacji SSL 1
Krok 3: Wdrożenie u klienta
Uwierzytelnianie oparte na przeglądarce wymaga zaimportowania certyfikatu klienta do magazynu certyfikatów przeglądarki. Każda przeglądarka obsługuje ten proces inaczej, ale generalnie znajdziesz tę opcję w ustawieniach bezpieczeństwa lub prywatności.
W przypadku urządzeń IoT musisz zaimplementować uwierzytelnianie oparte na certyfikacie w swoim kodzie. Oto przykład użycia biblioteki żądań Pythona:
importować wywołań
?
certyfikat_klienta = ('klient.crt', 'klucz klienta')
certyfikat_ca = 'ca.crt'
?
odpowiedź = wywołań.otrzymać('https://example.com',
cert=certyfikat_klienta,
zweryfikować=certyfikat_ca)
Krok 4: Walidacja certyfikatu
Prawidłowa walidacja certyfikatu jest kluczowa dla bezpieczeństwa. Twoja implementacja powinna weryfikować integralność łańcucha certyfikatów, sprawdzać daty wygaśnięcia, weryfikować status odwołania i zapewniać prawidłowe użycie klucza. Oto przykładowa implementacja:
od kryptografia importować x509
od kryptografia.hazmat.backendy importować domyślne_zaplecze
?
def sprawdź_certyfikat(ścieżka_cert):
w koncepcja(ścieżka_cert, 'rb') as plik_certyfikatu:
dane_certyfikatu = plik_certyfikatu.czytać()
cert = x509.załaduj_pem_x509_certyfikat(dane_certyfikatu, domyślne_zaplecze())
if cert.nie_ważny_po < data i godzina.data i godzina.już dziś():
podnieść Błąd wartości(„Certyfikat wygasł”)
próbować:
użycie_klucza = cert.rozszerzenia.pobierz_rozszerzenie_dla_klasy(x509.Kluczowe użycie)
if nie użycie_klucza.wartość.podpis_cyfrowy:
podnieść Błąd wartości(„Certyfikat nie jest ważny dla podpisu cyfrowego”)
z wyjątkiem x509.rozszerzenia.RozszerzenieNieZnaleziono:
podnieść Błąd wartości(„Nie znaleziono wymaganego rozszerzenia użycia klucza”)
Przypadki użycia wzajemnego uwierzytelniania
Wzajemny TLS uwierzytelnianie może służyć zarówno do uwierzytelniania użytkowników końcowych, jak i do wzajemnego uwierzytelniania urządzeń w sieci komputerowej.Uwierzytelnianie użytkownika
Firmy i inne organizacje mogą dystrybuować cyfrowe certyfikaty klientów do użytkowników końcowych, takich jak pracownicy, kontrahenci i klienci. Te certyfikaty klienta mogą służyć jako czynnik uwierzytelniania w celu uzyskania dostępu do zasobów firmowych, takich jak Wi-Fi, VPN i aplikacje internetowe. W przypadku użycia zamiast (lub oprócz) tradycyjnych danych uwierzytelniających nazwy użytkownika / hasła, wzajemne TLS oferuje kilka zalet bezpieczeństwa:- Wzajemny TLS uwierzytelnianie nie jest podatne na kradzież poświadczeń za pomocą taktyk takich jak phishing. Verizon Raport z dochodzeń w sprawie naruszenia danych 2020 wskazuje, że prawie jedna czwarta (22%) przypadków naruszenia bezpieczeństwa danych wynika z phishingu. Kampanie phishingowe mają na celu łatwe pozyskanie danych uwierzytelniających, takich jak hasła logowania do witryny, a nie klucze prywatne do certyfikatów klientów użytkowników. W celu dalszej ochrony przed phishingiem wszystkie witryny SSL.com E-mail, klient i podpisywanie dokumentów certyfikaty obejmują publicznie zaufane S/MIME dla podpisanych i zaszyfrowanych wiadomości e-mail.
- Wzajemny TLS uwierzytelnianie nie może być zagrożone przez słabą higienę haseł lub ataki siłowe na hasła. Możesz wymagać od użytkowników tworzenia silnych haseł, ale skąd wiesz, że nie używają tego samego „bezpiecznego” hasła w 50 różnych witrynach internetowych lub nie zapisują go na samoprzylepnej karteczce? ZA Ankieta Google 2019 wskazuje, że 52% użytkowników ponownie używa haseł do wielu kont, a 13% użytkowników używa tego samego hasła do cała kolekcja swoich kont.
- Certyfikaty klienta oferują jasne łańcuch zaufaniai może być zarządzany centralnie. Z wzajemnym TLS, weryfikacja, który ośrodek certyfikacji (CA) wydał poświadczenia użytkownika, jest wprowadzana bezpośrednio do procesu uwierzytelniania. SSL.com's narzędzia do zarządzania online, API SWSa dostęp do standardowych protokołów, takich jak SCEP, sprawia, że wydawanie, odnawianie i unieważnianie tych poświadczeń jest bardzo proste!
- Osoby lub organizacje wymagające tylko jednego lub kilku certyfikatów mogą zamówić Certyfikaty poczty e-mail, klienta i podpisywania dokumentów á la carte z SSL.com.
- Protokoły, takie jak SCEP, EST i CMP, mogą służyć do automatyzacji rejestracji i odnawiania certyfikatów klientów dla urządzeń należących do firmy i urządzeń BYO.
- Dla klientów wymagających dużej ilości certyfikatów dostępne są rabaty hurtowe Program dla sprzedawców i zakupów grupowych.
Najlepsze praktyki w zakresie bezpieczeństwa
Silne zabezpieczenia wymagają czegoś więcej niż tylko wdrożenia mTLS:
- Wprowadź automatyczną rotację certyfikatów, aby zapewnić regularną aktualizację certyfikatów
- Prowadź listę odwołanych certyfikatów, aby szybko unieważniać zagrożone certyfikaty
- W przypadku kluczy RSA należy używać kluczy o silnym kluczu o długości co najmniej 2048 bitów
- Skonfiguruj swoje serwery tak, aby akceptowały wyłącznie bezpieczne TLS wersje i silne zestawy szyfrów
Twoja strategia bezpieczeństwa klienta powinna obejmować ochronę kluczy prywatnych za pomocą silnych kontroli dostępu. Regularne audyty bezpieczeństwa pomogą utrzymać integralność systemu w czasie.
Rozwiązywanie typowych problemów
Problemy z łańcuchem certyfikatów
Podczas wdrażania mTLS, możesz napotkać problemy z łańcuchem certyfikatów. Zazwyczaj wynikają one z:
- Niekompletne łańcuchy certyfikatów
- Nieprawidłowo zainstalowane certyfikaty pośrednie
Aby rozwiązać te problemy:
- Sprawdź, czy konfiguracja Twojego punktu zaufania jest prawidłowa
- Upewnij się, że posiadasz wszystkie niezbędne certyfikaty
Problemy z połączeniem
Problemy z połączeniem często są związane z:
- Ustawienia zapory blokują TLS ruch drogowy
- Nieprawidłowe uprawnienia certyfikatu
Aby rozwiązać problem:
- Sprawdź, czy Twoje certyfikaty są poprawnie nazwane
- Upewnij się, że są one dopasowane do zamierzonego zastosowania
Rozważania dotyczące wydajności
Rozważania nad wydajnością stają się ważne na dużą skalę. Aby zoptymalizować wydajność:
- Wdrożenie buforowania sesji w celu zmniejszenia obciążenia związanego z powtarzającymi się uściskami dłoni
- Wybierz wydajne zestawy szyfrów, które zapewniają równowagę między bezpieczeństwem a wydajnością
- Monitoruj proces weryfikacji certyfikatu, aby mieć pewność, że nie generuje on niepotrzebnych kosztów
Podsumowanie
Wzajemny TLS zapewnia solidne zabezpieczenia zarówno dla uwierzytelniania użytkownika, jak i urządzenia IoT. Ten przewodnik przeprowadzi Cię przez podstawowe kroki implementacji, od generowania certyfikatu po rozwiązywanie typowych problemów. Postępując zgodnie z tymi wytycznymi i utrzymując dobre praktyki bezpieczeństwa, możesz stworzyć bezpieczny system uwierzytelniania, który chroni przed atakami sieciowymi, zapewniając jednocześnie niezawodną identyfikację klienta.