Zum Hauptinhalt springen

Zertifikate

Was ist zertifikatbasierte Authentifizierung?

Die zertifikatsbasierte Authentifizierung ist eine Authentifizierungsmethode, bei der ein digitales Zertifikat verwendet wird, um die Identität eines Benutzers, eines Geräts oder einer Anwendung zu überprüfen.

Digitale Zertifikate werden von einer vertrauenswürdigen Drittpartei, einer so genannten Certificate Authority (CA), ausgestellt. Sie enthalten Informationen über die Identität des Benutzers oder des Geräts sowie einen öffentlichen Schlüssel, der zur Ver- und Entschlüsselung von Nachrichten verwendet werden kann.

Um die zertifikatsbasierte Authentifizierung nutzen zu können, muss ein Benutzer oder ein Gerät zunächst ein digitales Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle erhalten. Das Zertifikat wird dann auf dem Gerät des Benutzers oder in der Anwendung installiert. Wenn der Benutzer oder das Gerät versucht, auf eine gesicherte Ressource zuzugreifen, wird das Zertifikat dem Server vorgelegt. Der Server überprüft das Zertifikat auf Gültigkeit, Authentizität und Sperrstatus. Wenn das Zertifikat gültig ist, gewährt der Server den Zugriff auf die Ressource.

Die zertifikatsbasierte Authentifizierung bietet ein hohes Maß an Sicherheit, da digitale Zertifikate verwendet werden, die schwer zu fälschen oder zu manipulieren sind. Sie wird häufig in Unternehmensumgebungen zur Authentifizierung von Benutzern und Geräten sowie für sichere Online-Transaktionen wie E-Commerce und Online-Banking verwendet.

Was ist der Unterschied zwischen Zertifikaten und Passwörtern?

Zertifikate und Passwörter sind zwei verschiedene Authentifizierungsmechanismen, die verwendet werden, um die Identität eines Benutzers oder eines Systems zu überprüfen. Passwortbasierte Authentifizierung ist die traditionelle Authentifizierungsmethode, bei der ein Benutzer einen Benutzernamen und ein Passwort eingibt, um Zugang zu einer Ressource zu erhalten. Der Server vergleicht die eingegebenen Anmeldeinformationen mit den gespeicherten Anmeldeinformationen und gewährt den Zugriff, wenn sie übereinstimmen. Zertifikate hingegen sind digitale Dokumente, die Informationen über die Identität eines Benutzers oder Systems enthalten und zur Authentifizierung des Benutzers oder Systems verwendet werden. Zertifikate werden von einer vertrauenswürdigen Drittpartei, einer so genannten Certificate Authority (CA), ausgestellt und zur Überprüfung der Identität der Entität verwendet, die sie ausstellt. Zertifikate basieren auf der Kryptografie mit öffentlichem Schlüssel, bei der ein privater Schlüssel zum Signieren eines Zertifikats und ein öffentlicher Schlüssel zum Verifizieren der Signatur verwendet wird.

Ein Unterschied zwischen Zertifikaten und Passwörtern besteht darin, dass Zertifikate für die Machine-to-Machine-Authentifizierung verwendet werden können, während Passwörter normalerweise für die Benutzerauthentifizierung verwendet werden. Dies macht Zertifikate ideal für die Absicherung von APIs, IoT-Geräten und anderen Machine-to-Machine-Verbindungen.

Wie kann ich ein neues Stammzertifikat erstellen?

Grundlage für die zertifikatbasierte Authentifizierung ist ein Stammzertifikat von welchem aus alle persönlichen Zertifikate aus erstellt werden können. Für den Login mit Smartcards können auch bereits existierende Zertifikate genutzt werden.

Falls jedoch ein neues Zertifikat erstellt werden soll, kann dies beispielsweise mit dem Tool OpenSSL erstellt werden:

  1. openssl genrsa -out ca.key 4096
  2. openssl req -new -x509 -days 18260 -key ca.key -out ca.crt

Das Ergebnis ist das neue Zertifikat ca.crt welches zum Erstellen bzw. Signieren der persönlichen Anmeldezertifikate für User verwendet werden kann.

Hinweis

Dieses Stammzertifikat muss für die zertifikatsbasierte Anmeldung im Identity Provider wie beispielsweise SAP importiert werden.

Wie kann ich persönliche Zertifikate zum Einloggen erstellen?

Wie auch bei den Stammzertifikaten können auch persönliche Zertifikate aus anderen Prozessen wiederverwendet werden. Es muss jedoch geprüft werden, ob diese im korrekten Format erstellt wurden und vom Identity Provider akzeptiert werden können.

Hinweis

Diese Anleitung zeigt ein Beispiel, wie die Zertifikate erstellt werden können. Um diesen Prozess zu automatisieren oder verbessern gibt es zahlreiche externe Tools. Wichtig ist, dass die entstehenden Zertifikate vom Identity Provider akzeptiert werden.

Fall neue Zertifikate erstellt werden müssen, kann das Tool OpenSSL verwendet werden.

Achtung

Die nächsten Schritte setzen das Stammzertifikat ca.crt voraus, welches in dem vorherigen Abschnitt erstellt wurde. Dieses muss auf dem Computer, auf welchem die persönlichen Zertifikate erstellt werden installiert werden.

Dies kann mit einem Doppelklick auf die Datei und der Auswahl von Zertifikat installieren.. durchgeführt werden. Wichtig ist, dass als Zertifikatsspeicher der Ordner Vertrauenswürdige Stammzertifizierungsstellen ausgewählt wird.

Im nächsten Schritt sind pro persönlichem Zertifikat zwei lokale Dateien zu erstellen:

  • .conf-Datei
  • .ext-Datei

Beispiel für den Inhalt der .conf-Datei (johndoe.conf):

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = DE
ST = Bayern
L = Wuerzburg
O = Flexus AG
OU = IT
CN = johndoe@mycompany.net

[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = email:johndoe@mycompany.net

Beispiel für den Inhalt der .ext-Datei (johndoe.ext):

keyUsage = digitalSignature, nonRepudiation
subjectAltName = email:johndoe@mycompany.net

Wenn diese beiden Dateien lokal vorliegen kann das persönliche Zertifikat mit OpenSSL erstellt werden:

  1. openssl genrsa -out johndoe.key 4096
  2. openssl req -new -days 825 -key johndoe.key -out johndoe.csr -config johndoe.conf
  3. openssl x509 -req -days 730 -in johndoe.csr -CA ../ca.crt -CAkey ../ca.key -set_serial 01 -out johndoe.crt
  4. openssl x509 -req -days 730 -sha512 -in johndoe.csr -CA ../ca.crt -CAkey ../ca.key -out johndoe.crt -extfile johndoe.ext -CAcreateserial
  5. openssl pkcs12 -export -out johndoe.p12 -inkey johndoe.key -in johndoe.crt -chain -CAfile ../ca.crt -passout pass:mysupersecretpassword

Das Ergebnis ist das neue userspezifische Zertifikat johndoe.p12 welches im Identitiy Provider wie SAP oder Microsoft Azure AD importiert werden kann. Dass Passwort sollte notiert werden, da es benötigt wird, wenn die Zertifikate auf eine SmartCard geschrieben und dann im TheFlex entschlüsselt werden sollen.

Wichtig ist, dass bei diesem Zertifikat geprüft wird, ob die Zertifikatskette zum Stammzertifikat vorhanden ist. Mit einem Doppelklick auf das Zertifikat sollte in einer Baumstruktur das Stammzertifikat sichtbar sein. Falls dem nicht so ist, ist ein häufiger Fehlerfall, dass das Stammzertifikat nicht oder falsch auf dem Computer installiert war.