Uwierzytelnianie użytkowników i urządzeń IoT za pomocą funkcji wzajemnych TLS

Dowiedz się, jak wdrożyć wzajemne TLS (mTLS) uwierzytelnianie w celu zabezpieczenia połączeń użytkownika i urządzenia IoT. Obejmuje krok po kroku konfigurację certyfikatu, konfigurację serwera, implementację klienta i wytyczne dotyczące rozwiązywania problemów.

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 ​​plik CertificateRequest 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 onlineAPI SWSa dostęp do standardowych protokołów, takich jak SCEP, sprawia, że ​​wydawanie, odnawianie i unieważnianie tych poświadczeń jest bardzo proste!
SSL.com oferuje wiele opcji wystawiania i zarządzania certyfikatami klienta:

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.

Skontaktuj się ze specjalistą SSL.com w sprawie Mutual TLS i IoT

Bądź na bieżąco i bezpiecznie

SSL.com jest światowym liderem w dziedzinie cyberbezpieczeństwa, PKI i certyfikaty cyfrowe. Zarejestruj się, aby otrzymywać najnowsze wiadomości branżowe, wskazówki i ogłoszenia o produktach od SSL.com.

Będziemy wdzięczni za Twoją opinię

Weź udział w naszej ankiecie i daj nam znać, co myślisz o swoim ostatnim zakupie.