Last Updated on 12. Juni 2020 by Sebastian
Das Thema Client Zertifikate ist im Zeitalter von 2 Faktor Authentifizierung meiner Meinung etwas Überholt. Aber trotzdem gibt es immer noch viele Firmen die ein Client Zertifikat voraussetzen um damit den Zugriff auf eine bestimmte Ressource an weitere Bedingungen zu knüpfen. Man verhindert dadurch das pure Bruteforcen eines Benutzernamen und Passworts. <- Hier kommt meiner Meinung nach der 2 Faktor ins Spiel der dieses Problem entsprechend löst. Solltet ihr allerdings in die Situation kommen mal schnell und AdHoc ein Client Zertifikat zu benötigen für die Absicherung eures Netscaler Gateway’s stelle ich euch hier einen möglichen Lösungsweg bereit.
Wir gehen in unserem Beispiel davon aus, dass unsere Laptops kein Mitglied einer Domäne sind und es keine interne CA gibt die evtl. Zertifikate verteilt. Solltet dies bei euch der Fall sein könnt ihr euch das erstellen eines Root CA Zertifikats ersparen und evtl. je nach Konfigurationsstand auch das verteilen von Clientzertifikaten. Aber legen wir mal los mit dem erstellen eines Root CA Zertifikats auf dem Citrix ADC.
Inhaltsverzeichnis
Erstellung Root CA Zertifikat
Wir öffnen hierzu die Weboberfläche des Citrix ADC (nachfolgend Netscaler genannt) und melden uns an. Unter Traffic Management -> SSL finden wir im Menü Getting Started den Root-CA Certificate Wizard
Hier generieren wir uns zunächst einen Privat Key. Standardwerte bei der Key Size sind 2048 oder 4096 bits. Das Key Format kann auf DER Encodiert gestellt werden es sei denn man möchte den Private Key zusätzlich verschlüsseln. Der Dateiname sollte am besten mit .key enden.
Der Certificate Signing Request (CSR) wird benötigt um zusammen mit dem Private Key ein Zertifikat zu bekommen. Solltet ihr im vorherigen Schritt ein PEM Key Formart gewählt haben müsst ihr hier nochmal die Passphrase eingeben. Ein Subject Alternative Name ist mittlerweile Standard und Zertifikate ohne SAN werden von Google als Untrusted eingestuft.
Im zweiten Schritt des CSR werden einige Informationen zum Zertifikat selbst benötigt. Die mit * versehenen Infromationen sind Pflichtangaben. Bei klassichen Domainzertifikaten werden bei SAN und Common Name die Domainnamen benötigt. Da wir aber bei einem Clientzertifikat die pure Anwesenheit eben dieses Zertifikats prüfen ist der Name zweitrangig.
Nun kommen wir zum erstellen des Zertifikats. Hier können wir anpassen wie lange unser Zertifikat gültig ist. Ebenso können wir auch hier wählen ob wir ein DER ( Unverschlüsseltes Zertifikat ) oder ein PEM (Verschlüsselt ) Zertifikat haben wollen.
Zum Abschluss wird das Root Zertifikat auf dem Netscaler installiert damit man es auch an ein Netscaler Gateway binden kann.
Die grüne Leiste zeigt an das die Installation des Zertifikats erfolgreich war. Mit Done kann man den Wizard nun beenden.
Erstellung Client Zertifikat
Zurück im SSL Hauptmenü unter Traffic Management wählen wir nun den Punkt Client Certificate Wizard aus.
Auch hier müssen wir im ersten Schritt den Privat Key erzeugen. Die Keysize habe ich Analog zum Root-CA Key auf 2048 eingestellt. Diesmal habe ich allerdings PEM als Key Format gewählt. Dies hat zur Folge das ich ein Encoding Algorithm wählen sowie ein Passphrase eingeben muss.
Ebenso muss im nächsten Schritt das Certificate Signing Request durchgeführt werden. Da wir im vorherigen Schritt das PEM Format gewählt haben müssen wir auch hier bei Key Format PEM auswählen und das Passpharse eingeben. Als Subject Alternative Name und Common Name habe ich ns-itnetx-client-a gewählt.
Die Felder mit * müssen hier wieder befüllt werden. Um den Zertifkat einen hohen Wahrheitsgehalt zu geben sollte man hier möglichst zutreffende Antworten geben.
Nachdem wir nun das CSR für unser Client Zertifikat erstellt haben kommen wir nun dazu das eigentliche Zertifikat zu erstellen. In dem Abschnitt ist es wichtig die richtigen Key und Zertifikats Formate auszuwählen. Ebenso die Laufzeit des Zertifikats.
Abschliessend kann auch hier das Zertifikat als Client Zertifikat auf dem Netscaler installiert werden. Dieser Abschnitt ist keine Pflicht, da wir das Zertifikat auf dem PC benötigen der sich mit dem Netscaler verbindet und nicht auf dem Netscaler selbst.
Solltet ihr den Schritt trotzdem durchführen und es kommt zu einer Fehlermeldung das ein Password benötigt wird für den private key. Siehe nächsten Screenshot
Dies ist wohl ein bekannter Bug in einigen Netscaler Versionen. Um das Problem zu beheben bleibt ihr im Wizard an der Stelle stehen und verbindet euch via Putty mit dem Netscaler. Dort wechselt ihr in den Ordner /nsconfig/ssl und gibt folgende Befehle ein.
openssl rsa -in ns-itnetx-client-a.key -out ns-itnetx-client-b.key
Dann müsst ihr die Passphrase eures Keys erneut eingeben. Anschliessend entfernt ihr euren alten Key und bennent den neuen Key in den alten um.
rm ns-itnetx-client-a.key mv ns-itnetx-client-b.key ns-itnetx-client-a.key
Nun sollte auch das Installieren des Client Zertifikates funktionieren. Der Grüne Balken gibt hierüber entsprechend Auskunft. Mit Done wird der Wizard beendet.
Exportieren des Client Zertifikates im PKCS12 Format
Zurück im Hauptmenü SSL unter Traffic Mangement klicken wir nun auf Export PKCS#12
Der Dialog ist relativ Simpel aufgebaut. Als erstes wählen wir den Namen der Ausgabedatei. Hier im Beispiel ns-itnetx-client-a.p12 . Dann müssen noch das crt und der Private Key auf der Netscaler Appliance gewählt werden. Abschliessend brauchen wir ein Export Passwort damit der Key nicht von jedem installiert werden kann sondern nur von der Person die auch den Key hat. Zusätzlich benötigen wir noch das PEM Passphrase für den Private Key.
Unter dem Untermenüpunkt SSL Files -> Certificates sollte sich dann unser Exportfähiges p12 Zertifikat befinden. Wir wählen es aus und klicken auf Download.
Exportieren des Client Zertifikates im PKCS12 Format mit TLS 1.2 Support
In der Variante wie oben beschrieben für den Export der PKCS12 Datei ist es nötig das im Netscaler Gateway TLS1.2 deaktiviert werden muss. Da dies kein akzeptabler Zustand ist gibt es die möglichkeit via CLI das Zertifikat Kompatibel für TLS1.2 zu exportieren. Hierzu verbinden wir uns erneut via Putty auf den Netscaler. Wir wechseln wieder in das Verzeichnis /nsconfig/ssl und kopieren und die Datei ns-itnetx-lcient-a.key sowie die Datei ns-itnetx-client-a.crt nach /tmp
cp ns-itnetx-client-a.key /tmp cp ns-itnetx-client-a.crt /tmp
Jetzt wechseln wir in das Verzeichnis /tmp und erstellen manuell eine PKCS12 Datei. Wichtig ist die Angabe des CSP. Damit wird es ermöglicht das Zertifikat auch TLS1.2 kompatibel zu machen.
openssl pkcs12 -export -in ns-itnetx-client-a.crt -inkey ns-itnetx-client-a.key -passing pass:Passw0rt -out ns-itnetx-client-a.p12 -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"
Wir müssen nachdem letzten Befehl auch noch eine Passphrase ( Export Passwort ) für unser Zertifikat vergeben.
Via WinSCP können wir uns auf den Netscaler verbinden und dort unter /tmp die erzeugte Datei auf den lokalen Rechner kopieren.
Anpassung des Citrix Gateway
Im nächsten Schritt ist es nötig das Citrix Gateway anzupassen damit es auch die Funktion der Client Zertifikatsauthentifizierung verwendet.
Nachdem wir unser Gateway das wir editieren wollen angeklickt haben fügen wir im ersten Schritt das CA Zertifikat hinzu
Im Dialog CA Certificate Bindung wählen das entsprechen von uns generierte Root CA Zertifikat aus.
Unter den SSL Parameter ist zum Abschluss noch wichtig das er Punkt Client Authentication aktiv ist und bei Client Certificate „MANDATORY“ ausgewählt ist. Solltet ihr das Client Zertifikat im PKCS12 Format im Web Frontend des Netscaler ausgeführt haben wird es vermutlich nötig sein an der Stelle auch TLSv12 zu deaktivieren. Solltet ihr das Zertifikat via CLI erstellt haben könnt ihr die Einstellung so lassen.
Installation Client Zertifikat auf Client
Nachdem ihr die p12 Datei via Email etc. verteilt habt kommt nun noch die Anleitung wie man sie entsprechend installiert. Zu erste installieren wir das Zertifikat in den Windows Zertifikatsstore. Dazu führen wir ein Doppelklick auf die p12 Datei durch. Der Zertifikatsimport-Assistent leitet uns durch die nächste Schritte.
Heir muss das Passwort eingegeben werden das wir beim erstellen der P12 Datei verwendet haben. Siehe Installation CLI. Anschliessend klicken wir auf Weiter.
Hier kann man den Zertifikatspeicher auswählen oder auswählen lassen in dem das Zertifikat gespeichert wird. Wenn ihr es auf automatisch lässt wird das Zertifikat gleich direkt gespeichert. (Persönliche Zertifikate )
Abschliessend klicken wir auf Fertigstellen.
Installation Zertifikat via Mozilla Firefox
Mozilla Firefox hat einen eigenen Zertifikatsspeicher und greift nicht auf den Windows eigenen Speicher zurück. Was bedeutet das wir unser Zertifikat noch in Mozilla installieren müssen. Hierzu öffnen wir Mozilla Firefox. Im Menü rechts wechseln wir auf den Punkt Einstellungen.
Die Suche im Einstellungen Menü ist sehr hilfreich. Einfach mal Zertifikat eingeben. Dann bekommen wir das Zertifikat Menü angezeigt. Unter Zertifikate anzeigen.. öffnet sich ein neues Fenster mit der Zertifikatsverwaltung.
Unter dem Punkt Importieren lässt sich nun das p12 Zertifikat importieren.
Auch hier muss man das Passwort eingeben das zum Erstellen der p12 Datei verwendet wurde.
Zur Kontrolle prüfen wir ob das Zertifikat nun unter Ihre Zertifikate aufgeführt wird.
Test und Umgebung
Wir öffnen die Webseite vom Citrix Gateway ( Netscaler ). Firefox sollte uns mit einem Dialog danach Fragen welches Zertifikat er verwenden soll. Hat man nur ein persönliches Zertifikat wird natürlich immer das richtige angezeigt und man kann einfach auf OK klicken.
Sollte die Authentifizierung des Client Zertifikat erfolgreich gewesen sein kommen wir zur eigentlichen Anmeldemaske
Nach der Eingabe von Benutzername und Passwort kommen wir in den Storefront in dem wir unsere Session auswählen. Beim start der Anwendung frag er uns nun erneut nachdem Client Zertifikat. Deswegen ist es wichtig das wir das Client Zertifikat auch in den Windows eigenen Store installiert haben .
Wenn wir alles richtig gemacht haben sollten wir unseren Citrix Desktop oder unsere Applikation sehen die ab jetzt zusätzlich mit einem Client Zertifikat geschützt ist.
Soo das wars. Solltet ihr noch Fragen haben oder Anregungen könnt ihr mir gerne Schreiben.