X.509-Authentifizierung
Mit der X.509-Clientauthentifizierung können sich Clients über Zertifikate anstatt mit einem Benutzernamen und Passwort bei Servern authentifizieren. Hierzu wird der Standard X.509 PKI (Public Key Infrastructure; Infrastruktur für öffentliche Schlüssel) verwendet.
MSS bietet zusätzliche Informationen zur X.509-Konfiguration.
X.509-Clientauthentifizierung aktivieren
-
Wenn der Benutzer mit TLS auf den Webclient zugreift, sendet der Browser ein Zertifikat an den Sitzungsserver, das den Endbenutzer identifiziert und den TLS-Handshake abschließt.
-
Der Sitzungsserver überprüft das Clientzertifikat und dessen Verbürgung über den Truststore.
-
Nach Abschluss der TLS-Verhandlung (wenn der Sitzungsserver den Endbenutzer verbürgt hat) sendet der Sitzungsserver das öffentliche Zertifikat des Endbenutzers zur weiteren Überprüfung an MSS.
-
MSS überprüft ebenfalls über den eigenen Truststore, ob das Zertifikat des Endbenutzers verbürgt werden kann.
-
Nach Abschluss der Überprüfung durch MSS ist der Benutzer erfolgreich authentifiziert.
Die gesamte Zertifikatskette des Client muss im Sitzungsserver-Truststore und im MSS-Truststore vorhanden sein oder von einer Zertifizierungsstelle signiert sein, die in beiden Truststores enthalten ist.
Der Browser ermittelt das zu sendende Clientzertifikat gemäß der Browser- oder Smartcard-spezifischen Konfiguration.
Grundlegende Schritte
-
Verbürgen Sie die Zertifikate auf dem Sitzungsserver und in MSS, sofern sie noch nicht verbürgt sind.
-
Starten Sie die Server neu.
-
Konfigurieren Sie X.509 in der MSS-Verwaltungskonsole.
Zertifikat in MSS und auf dem Sitzungsserver verbürgen
-
Zertifikat in MSS verbürgen
Ihr Zertifikat der Zertifizierungsstelle kann bereits im vertrauenswürdigen Speicher von MSS enthalten sein. Dies kommt häufig bei bekannten Zertifizierungsstellen vor. In dem Fall können Sie diesen Schritt überspringen.
Überprüfung:
-
Öffnen Sie die Verwaltungskonsole, klicken Sie auf „Configure Settings“ (Einstellungen konfigurieren), und öffnen Sie die Registerkarte „Trusted Certificates“ (Verbürgte Zertifikate). Öffnen Sie „Trusted Root Certificate Authorities“ (Verbürgte Stammzertifizierungsstellen), um eine Liste der verfügbaren Zertifikate anzuzeigen.
-
Wenn Ihr Zertifikat nicht aufgelistet ist, müssen Sie entsprechend den Eingabeaufforderungen und der Dokumentation in der Verwaltungskonsole die signierende Stammzertifizierungsstelle in MSS installieren.
-
Zertifikat auf dem Sitzungsserver verbürgen
So installieren Sie das Zertifikat auf dem Sitzungsserver:
Importieren Sie das Zertifikat in
<Installationsverzeichnis>\sessionserver\etc
:
keytool -importcert -file <cert-Datei> -alias <alias-unter-dem-Zertifikat-gespeichert-werden-soll>
-keystore trustcerts.bcfks -storetype bcfks -providername BCFIPS
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
-providerpath ../lib/bc-fips-*.jar
-storepass changeit
Alle Server neu starten
Die Konfiguration ist erst wirksam, nachdem Sie alle Server neu gestartet haben.
X.509 mit LDAP-Failover in der MSS-Verwaltungskonsole konfigurieren
Nachdem die Zertifikate eingerichtet sind, können Sie X.509 mit der Option zum Fallback auf die LDAP-Authentifizierung in Management and Security Server Administrative Console | Configure Settings | Authentication & Authorization (Management and Security Server-Verwaltungskonsole | Einstellungen konfigurieren | Authentifizierung und Autorisierung) konfigurieren. Beschreibungen der Konfigurationsoptionen finden Sie in der Onlinehilfe der Verwaltungskonsole.
Aktivieren von X.509 über einen Lastverteiler, der zum Beenden der TLS-Verbindung konfiguriert ist
In dieser Konfiguration authentifiziert der Lastverteiler die Endbenutzer durch Bestätigung des Clientzertifikats. Das Clientzertifikat muss jedoch weiterhin an alle anderen MSS-Systeme gesendet werden, um den eingehenden Benutzer zu identifizieren.
Wenn der Lastausgleicher zum Beenden der TLS-Verbindung konfiguriert ist, kann das Zertifikat des Benutzers zu einem HTTP-Header hinzugefügt, vom Sitzungsserver extrahiert und dann zur Autorisierung an MSS weitergeleitet werden. Um das Zertifikat in einen Header zu übertragen, legen Sie zuerst in der Datei container.properties
des HACloud-Sitzungsservers den Headernamen fest:
So übertragen Sie das Zertifikat an einen Header:
-
Legen Sie den Headernamen in der Datei „container.properties“ des HACloud-Sitzungsservers fest:
x509.header.client.cert=X-SSL-Client-Cert
-
Legen Sie den Headerwert auf das Benutzerzertifikat in der Lastausgleicherkonfiguration fest. Beispiel mit Verwendung einer BIG-IP-iRule:
HTTP::header insert X-SSL-Client-Cert [URI::encode $client_cert]
Dies setzt voraus, dass
$client_cert
auf das Benutzerzertifikat im PEM-Format festgelegt wurde. Wenn das Benutzerzertifikat im DER-Format vorliegt, verwenden Sie die Base64-Kodierung:HTTP::header insert X-SSL-Client-Cert [b64encode $client_cert]
Durch das Kodieren des Zertifikats wird gewährleistet, dass der Headerwert eine Zeile ASCII-Text darstellt. Dies ist erforderlich, damit der HACloud-Sitzungsserver den Wert lesen kann.
Hinweis
Die Authentifizierung mit dem Clientzertifikat muss weiterhin zwischen dem Lastverteiler und dem Sitzungsserver stattfinden. Der Lastverteiler muss so konfiguriert sein, dass er sein Zertifikat an den Sitzungsserver sendet, und die Zertifizierungsstelle des Lastverteilers muss im Truststore des Sitzungsservers vorhanden sein.
-
Nachdem Sie den Lastausgleicher zum Senden des Zertifikats an den HACloud-Sitzungsserver konfiguriert haben und das Hinzufügen des Benutzerzertifikats zum Header konfiguriert haben, starten Sie den Sitzungsserver neu.
Bei der Verbindung mit einem Zertifikat oder einer Smartcard über den Lastausgleicher wird der vom Zertifikat dargestellte Benutzer erfolgreich authentifiziert und autorisiert. Um den Vorgang zu überprüfen, legen Sie den Protokollierumfang des Sitzungsservers auf „DEBUG“ (Fehlersuche) fest und untersuchen Sie die Datei „sessionserver.log“ auf Einträge der folgenden Art:
Attempting to extract certificate from X-SSL-Client-Cert header. User <DN-Wert> has been preauthenticated from <IP-Adresse>
(Es wird versucht, das Zertifikat vom X-SSL-Client-Cert-Header abzurufen. Der Benutzer <DN-Wert> wurde von <IP-Adresse> vorauthentifiziert.)
Zusätzliche Konfiguration
Standardmäßig enthält der Truststore des HACloud-Sitzungsservers die Java-ZS-Zertifikate. Deshalb akzeptiert der HACloud-Sitzungsserver jedes Clientzertifikat, das von einer bekannten Zertifizierungsstelle signiert ist. Um sicherzustellen, dass nur die gewünschten Lastausgleicher eine Verbindung zum Sitzungsserver herstellen können, müssen Sie die Java-ZS-Zertifikate aus dem Truststore entfernen und sicherstellen, dass nur die erforderlichen Zertifikate im Truststore installiert sind.
Um die zulässigen Clientzertifikate nach Aussteller-DN zu filtern, legen Sie in der Datei container.properties
des HACloud-Sitzungsservers die folgenden Eigenschaften fest:
X509.client.cert.issuer=<DN-Wert>
X509.client.cert.subject=<Subject-DN-Wert>
X509.client.cert.serial=<Seriennummer>
X509.client.cert.sha1=<SHA1-Fingerabdruck>
X509.client.cert.sha256=<SHA256-Fingerabdruck>
Die DN-Werte müssen genau mit dem Lastausgleich-Zertifikataussteller bzw. Subject-DN übereinstimmen. Die Seriennummer muss einen Dezimalwert (Zehnersystem) annehmen. Die Werte für den SHA1- und den SHA256-Fingerabdruck müssen im Hexadezimalformat eingegeben werden. Wenn beliebige dieser Attribute festgelegt sind, wird überprüft, ob die Attribute des eingehenden Zertifikats mit den angegebenen Eigenschaftenwerten übereinstimmen. Wenn beliebige Werte nicht übereinstimmen, erfolgt keine Autorisierung.