gegenseitig TLS (mTLS) Authentifizierung schafft einen sicheren Rahmen für die Authentifizierung von Benutzern und IoT-Geräten. Dieser Leitfaden führt Sie durch die Implementierung von mTLS um eine sichere bidirektionale Authentifizierung zwischen Clients und Servern zu gewährleisten.
Quick Start Guide
Gründung einer gegenseitigen TLS folgt einem unkomplizierten Prozess. Generieren Sie zunächst die erforderlichen Server- und Client-Zertifikate. Konfigurieren Sie anschließend Ihren Server so, dass Client-Zertifikate erforderlich sind. Richten Sie dann Ihre Clients mit ihren Zertifikaten ein und implementieren Sie eine ordnungsgemäße Zertifikatsüberprüfung. Testen Sie abschließend die Verbindung, um sicherzustellen, dass alles wie erwartet funktioniert.
Einweg- und gegenseitiges SSL /TLS Authentifizierung
Eines der bestimmenden Merkmale des SSL /TLS Protokoll ist seine Rolle bei der Authentifizierung ansonsten anonymer Parteien in Computernetzwerken (wie dem Internet). Wenn Sie eine Website mit einem öffentlich vertrauenswürdigen besuchen SSL /TLS BescheinigungIhr Browser kann überprüfen, ob der Websitebesitzer einer vertrauenswürdigen Zertifizierungsstelle eines Drittanbieters (z. B. SSL.com) erfolgreich die Kontrolle über diesen Domainnamen nachgewiesen hat. Wenn diese Überprüfung fehlschlägt, werden Sie vom Webbrowser gewarnt, dieser Site nicht zu vertrauen. Für die meisten Anwendungen SSL /TLS verwendet diese Art von Einwegauthentifizierung von einem Server zu einem Client; Ein anonymer Client (der Webbrowser) handelt eine verschlüsselte Sitzung mit einem Webserver aus, der ein öffentlich vertrauenswürdiges SSL / präsentiert.TLS Zertifikat zur Identifizierung während der SSL /TLS Handschlag: Gegenseitige Authentifizierung, in dem beide Server und Client im SSL /TLS Sitzungen werden authentifiziert, sind ebenfalls möglich und können unter bestimmten Umständen sehr nützlich sein. Bei der gegenseitigen Authentifizierung sendet der Server nach der Authentifizierung während des Handshakes eineCertificateRequest
Nachricht an den Kunden. Der Client sendet daraufhin ein Zertifikat zur Authentifizierung an den Server:
Client-Authentifizierung über gegenseitige TLS erfordert, dass ein Zertifikat einschließlich der Client Authentication (1.3.6.1.5.5.7.3.2)
Extended Key Usage (EKU) ist auf dem Clientgerät installiert. Alle von SSL.com E-Mail-, Client- und Dokumentensignaturzertifikate Client-Authentifizierung einschließen.
Detaillierter Implementierungsleitfaden
Gegenseitiges Verständnis TLS
Traditionelle TLS bietet Serverauthentifizierung und Verschlüsselung, aber gegenseitige TLS geht noch weiter und verlangt von beiden Parteien die Vorlage digitaler Zertifikate. Diese Zwei-Wege-Verifizierung stellt die Serverauthentizität sicher, ermöglicht die Client-Authentifizierung, richtet einen verschlüsselten Kommunikationskanal ein und verhindert Man-in-the-Middle-Angriffe. Das Ergebnis ist eine hochsichere Verbindung, die für sensible Anwendungen und die Kommunikation mit IoT-Geräten geeignet ist.
Voraussetzungen:
Stellen Sie vor Beginn der Implementierung sicher, dass Sie Zugriff auf OpenSSL oder ein ähnliches Zertifikatsverwaltungstool haben. Ihr Webserver muss dies unterstützen TLS, und Sie benötigen entweder Zugriff auf eine Zertifizierungsstelle (CA) oder die Möglichkeit, eine private Zertifizierungsstelle zu erstellen. Ihre Clients müssen außerdem die zertifikatsbasierte Authentifizierung unterstützen.
Schritt 1: Zertifikatserstellung und -verwaltung
Beginnen Sie mit der Generierung der erforderlichen Zertifikate für die Server- und Client-Authentifizierung. Für die Einrichtung des Serverzertifikats ist die Erstellung eines privaten Schlüssels erforderlich. Generieren einer Zertifikatsignieranforderung, und signieren Sie das Zertifikat bei Ihrer Zertifizierungsstelle.
# Privaten Serverschlüssel generieren
openssl Gattung -aus server.key 2048
?
# Server-Zertifikatsignieranforderung erstellen (CSR)
openssl req -Neu -Schlüssel server.key -aus server.csr
?
# Signieren Sie das Server-Zertifikat bei Ihrer Zertifizierungsstelle
openssl x509 -anf -in server.csr -CA ca.crt -CAkey ca.schlüssel -CAerstelltseriell -aus server.crt
Befolgen Sie für Client-Zertifikate einen ähnlichen Prozess, um ihre eindeutigen Anmeldeinformationen zu erstellen:
# Privaten Client-Schlüssel generieren
openssl Gattung -aus client.key 2048
?
# Client erstellen CSR
openssl req -Neu -Schlüssel client.key -aus client.csr
?
# Signieren Sie das Client-Zertifikat
openssl x509 -anf -in client.csr -CA ca.crt -CAkey ca.schlüssel -CAerstelltseriell -aus client.crt
Schritt 2: Serverkonfiguration
Der Server muss so konfiguriert sein, dass Client-Zertifikate angefordert und validiert werden. Hier ist eine Beispielkonfiguration für Nginx:
Server {
hören 443 SSL;
Servername beispiel.com;
?
ssl_certificate /Weg nach/Server.crt;
ssl_certificate_key /Weg nach/Server.Schlüssel;
ssl_client_certificate /Pfad/zu/ca.crt;
SSL-Verifizierungsclient auf;
ssl_protokolle TLSv1.2 TLSv1.3;
ssl_ciphers HOCH:!aNULL:!MD5;
SSL_Prefer_Server_Chiffren auf;
}
Verwenden Sie für Apache-Server diese Konfiguration:
<VirtualHost *:443>
Server example.com
SSLEngine on
SSLZertifikatsdatei /Pfad/zum/Server.crt
SSLCertificateKeyFile /Pfad/zum/Server.Schlüssel
SSLCACertificateFile /Pfad/zu/ca.crt
SSLVerifyClient erfordern
SSLVerifyDepth 1
Schritt 3: Client-Implementierung
Für die browserbasierte Authentifizierung müssen Sie das Client-Zertifikat in den Zertifikatspeicher Ihres Browsers importieren. Jeder Browser handhabt diesen Vorgang anders, aber im Allgemeinen finden Sie die Option in den Sicherheits- oder Datenschutzeinstellungen.
Für IoT-Geräte müssen Sie eine zertifikatsbasierte Authentifizierung in Ihren Code implementieren. Hier ist ein Beispiel mit der Requests-Bibliothek von Python:
importieren Zugriffe
?
client_cert = ('Client.crt', 'Client.Schlüssel')
ca_cert = 'ca.crt'
?
Antwort = Zugriffe.bekommen(„https://example.com“,
cert=client_cert,
überprüfen=ca_cert)
Schritt 4: Zertifikatsvalidierung
Eine ordnungsgemäße Zertifikatsüberprüfung ist für die Sicherheit von entscheidender Bedeutung. Ihre Implementierung sollte die Integrität der Zertifikatskette überprüfen, Ablaufdaten prüfen, den Widerrufsstatus validieren und die ordnungsgemäße Schlüsselverwendung sicherstellen. Hier ist eine Beispielimplementierung:
für Geheimschrift importieren x509
für Geheimschrift.hazmat.Backends importieren default_backend
?
def Zertifikat validieren(cert_path):
mit XNUMXh geöffnet(cert_path, 'rb') as cert_file:
Zertifikatsdaten = cert_file.lesen()
cert = x509.PEM-X509-Zertifikat laden(Zertifikatsdaten, default_backend())
if cert.nicht_gültig_nach < datetime.datetime.jetzt an†
erhöhen WertFehler("Zertifikat ist abgelaufen")
versuchen:
Schlüsselverwendung = cert.Erweiterungen.Erweiterung für Klasse abrufen(x509.Schlüsselverwendung)
if nicht Schlüsselverwendung.Wert.digitale_signatur:
erhöhen WertFehler(„Zertifikat nicht gültig für digitale Signatur“)
ausgeschlossen x509.Erweiterungen.Erweiterung nicht gefunden:
erhöhen WertFehler(„Erforderliche Schlüsselverwendungserweiterung nicht gefunden“)
Anwendungsfälle für die gegenseitige Authentifizierung
gegenseitig TLS Die Authentifizierung kann sowohl zur Authentifizierung von Endbenutzern als auch zur gegenseitigen Authentifizierung von Geräten in einem Computernetzwerk verwendet werden.Benutzerauthentifizierung
Unternehmen und andere Organisationen können digitale Kundenzertifikate an Endbenutzer wie Mitarbeiter, Auftragnehmer und Kunden verteilen. Diese Client-Zertifikate können als Authentifizierungsfaktor für den Zugriff auf Unternehmensressourcen wie Wi-Fi, VPNs und Webanwendungen verwendet werden. Bei Verwendung anstelle (oder zusätzlich zu) herkömmlicher Anmeldeinformationen für Benutzername / Passwort gegenseitig TLS bietet mehrere Sicherheitsvorteile:- gegenseitig TLS Die Authentifizierung ist nicht anfällig für den Diebstahl von Anmeldeinformationen über Taktiken wie z Phishing. Verizons 2020-Bericht über Datenverletzungsuntersuchungen gibt an, dass fast ein Viertel (22%) der Datenverletzungen auf Phishing zurückzuführen sind. In Phishing-Kampagnen werden leicht abrufbare Anmeldeinformationen wie Website-Anmeldekennwörter verwendet, nicht die privaten Schlüssel für die Client-Zertifikate der Benutzer. Als weitere Verteidigung gegen Phishing alle SSL.com Signieren von E-Mails, Kunden und Dokumenten Zertifikate enthalten öffentlich vertrauenswürdige S/MIME für signierte und verschlüsselte E-Mails.
- gegenseitig TLS Die Authentifizierung kann nicht durch schlechte Passworthygiene oder Brute-Force-Angriffe auf Passwörter beeinträchtigt werden. Sie können verlangen, dass Benutzer sichere Kennwörter erstellen. Woher wissen Sie jedoch, dass sie nicht dasselbe „sichere“ Kennwort auf 50 verschiedenen Websites verwenden oder es auf eine Notiz schreiben lassen? EIN Google-Umfrage 2019 gibt an, dass 52% der Benutzer Kennwörter für mehrere Konten wiederverwenden und 13% der Benutzer dasselbe Kennwort für wiederverwenden alle ihrer Konten.
- Kundenzertifikate bieten eine klare Kette des Vertrauensund kann zentral verwaltet werden. Mit gegenseitigen TLSDie Überprüfung, welche Zertifizierungsstelle (CA) die Anmeldeinformationen eines Benutzers ausgestellt hat, wird direkt in den Authentifizierungsprozess integriert. SSL.com Online-Management-Tools, SWS-APIDer Zugriff auf Standardprotokolle wie SCEP macht das Ausstellen, Erneuern und Widerrufen dieser Anmeldeinformationen zum Kinderspiel!
- Einzelpersonen oder Organisationen, die nur ein oder wenige Zertifikate benötigen, können bestellen E-Mail-, Client- und Dokumentensignaturzertifikate à la carte von SSL.com.
- Protokolle wie SCEP, EST und CMP können verwendet werden, um die Registrierung und Erneuerung von Clientzertifikaten für firmeneigene Geräte und BYO-Geräte zu automatisieren.
- Für Kunden, die eine große Anzahl von Zertifikaten benötigen, sind über unsere Großhandelsrabatte erhältlich Reseller- und Volumeneinkaufsprogramm.
Best Practices für die Sicherheit
Starke Sicherheit erfordert mehr als nur die Implementierung vonTLS:
- Implementieren Sie eine automatische Zertifikatsrotation, um sicherzustellen, dass Zertifikate regelmäßig aktualisiert werden
- Pflegen Sie eine Zertifikatsperrliste, um kompromittierte Zertifikate schnell ungültig zu machen
- Verwenden Sie starke Schlüsselgrößen von mindestens 2048 Bit für RSA-Schlüssel
- Konfigurieren Sie Ihre Server so, dass sie nur sichere TLS Versionen und starke Cipher Suites
Ihre Client-Sicherheitsstrategie sollte den Schutz privater Schlüssel durch strenge Zugriffskontrollen umfassen. Regelmäßige Sicherheitsüberprüfungen tragen dazu bei, die Integrität des Systems langfristig aufrechtzuerhalten.
Fehlerbehebung bei häufigen Problemen
Probleme mit der Zertifikatskette
Bei der Umsetzung mTLSkönnen Probleme mit der Zertifikatskette auftreten. Diese sind in der Regel auf folgende Ursachen zurückzuführen:
- Unvollständige Zertifikatsketten
- Falsch installierte Zwischenzertifikate
So beheben Sie diese Probleme:
- Überprüfen Sie, ob Ihre Trust-Anchor-Konfiguration korrekt ist.
- Stellen Sie sicher, dass alle erforderlichen Zertifikate vorhanden sind
Verbindungsprobleme
Verbindungsprobleme hängen häufig mit Folgendem zusammen:
- Blockieren durch Firewall-Einstellungen TLS der Verkehr
- Falsche Zertifikatsberechtigungen
Fehlerbehebung:
- Überprüfen Sie, ob Ihre Zertifikate richtig benannt sind
- Stellen Sie sicher, dass sie für den vorgesehenen Einsatzzweck geeignet sind
Leistungsüberlegungen
Leistungsüberlegungen werden bei der Skalierung wichtig. So optimieren Sie die Leistung:
- Implementieren Sie Session-Caching, um den Aufwand wiederholter Handshakes zu reduzieren
- Wählen Sie effiziente Verschlüsselungspakete, die Sicherheit und Leistung in Einklang bringen
- Überwachen Sie Ihren Zertifikatsvalidierungsprozess, um sicherzustellen, dass er keinen unnötigen Mehraufwand verursacht.
Fazit
gegenseitig TLS bietet robuste Sicherheit für die Authentifizierung von Benutzern und IoT-Geräten. Dieser Leitfaden hat Sie durch die wesentlichen Schritte der Implementierung geführt, von der Zertifikatserstellung bis zur Behebung häufiger Probleme. Indem Sie diese Richtlinien befolgen und gute Sicherheitspraktiken einhalten, können Sie ein sicheres Authentifizierungssystem erstellen, das vor netzwerkbasierten Angriffen schützt und gleichzeitig eine zuverlässige Clientidentifizierung gewährleistet.