Wenn man auf einer SonicWall SSLVPN für den Zugriff via NetExtender einrichtet und kein kommerzielles Zertifikat dafür kauft und einrichtet, verwendet die SonicWall ein selbstausgestelltes Zertifikat zur Absicherung der Verbindung, was natürlich am Client eine entsprechende Sicherheitswarnung (ERR_CERT_AUTHORITY_INVALID) verursacht. Dies soll natürlich vermieden werden, deshalb habe ich für diesen Zweck ein Zertifikat mit der in der Windows Domäne vorhandenen Certification Authority (CA) erzeugt.
Zuerst muss sichergestellt sein, dass eine „Enterprise CA“ in der Domäne existiert und das dazugehörige Root-Zertifikat per GPO auf alle Rechner verteilt wird.
Dann sollte man vorab (einmalig) mit certtmpl.msc ein für den Zweck angepasstes Zertifikats-Template erzeugen:
- Rechtsklick auf das „Web Server“ Template, Duplizieren und Bearbeiten
- Auf dem Compatibility Reiter „Windows Server 2008 R2“ und „Windows 7 / Server 2008 R2“ wählen
- Auf dem General Reiter einen Namen vergeben (z.B. SonicWall SSLVPN)
- Auf dem Reiter Request Handling sicherstellen, dass „Allow private key to be exported“ nicht aktiv ist
- Auf dem Reiter Subject Name sicherstellen, dass „Supply in the request“ aktiv ist
- Auf dem Reiter Extensions bei „Application Policies“ sicherstellen, dass dort nur „Server Authentication“ aufgelistet ist
- Auf dem Reiter Security bei dem User, der das Zertifikat erzeugt (z.B. Domain Admins), die Berechtigung Enroll und sinnvollerweise auch Autoenroll hinzufügen
Das so erzeugte Zertifikats-Template muss man anschließend in certsrv.msc durch Rechtsklick auf „Certificate Templates -> New -> Certificate Template to Issue“ veröffentlichen.
Als ersten Schritt erzeugt man dann auf der SonicWall eine CSR-Datei (hier für eine Gen6-SonicWall erklärt)
- Auf der Seite Manage->Applicance->Certificates klickt man unter die Zertifikatsliste auf „New Signing Request“
- Im folgenden Fenster zuerst bei „Certificate Alias“ einen Namen für das zu erzeugende Zertifikat wählen (wird später in der SonicWall in der Zertifikatsliste angezeigt werden) und dann mindestens folgende Felder ausfüllen: Country (C), State (ST), Locality (L), Organisation (O), Department (OU) und Common Name (CN) ausfüllen. Achtung: Der CN muss exakt der FQDN sein (ohne Portangabe am Ende), der für die Verbindung mit NetExtender zur SonicWall verwendet wird).
- Wichtig: Bei „Subject Alternative Name (Optional)/Domain Name“ das gleiche wie bei CN eintragen. Ohne SAN läuft der gesamte Prozess zwar sauber durch, aber dem Zertifikat wird am Ende nicht vertraut!
- Unten dann noch bei „Signature Algorithm“ SHA256 und bei „Subject Key Size“ 2048 wählen
Damit wurde die Datei Certificate_Alias.p10 erzeugt, die dummerweise (da nicht .req) nicht mit certsrv.msc verarbeitet werden kann. Deshalb muss die Zertifikatsanforderung bei der CA in einer Eingabeaufforderung mit folgendem Befehl erfolgen:
certreq -submit -attrib "CertificateTemplate:SonicWall SSLVPN" "PathTo\Certificate_Alias.p10" "PathTo\Certificate_Alias.cer"
An dieser Stelle habe ich eine Fehlermeldung (CERTSRV_E_UNSUPPORTED_CERT_TYPE) bekommen. Es hat sich herausgestellt, dass an dieser Stelle nicht der Display Name sondern der Internal Name des Templates verwendet werden muss (der in diesem Fall SonicWallSSLVPN war, also ohne Leerzeichen). Den Internal Name aller Templates kann man sich in PowerShell mit „Get-CATemplate“ anzeigen lassen.
Die so erzeugte Certificate_Alias.cer kann jetzt in der SonicWall in der Zertifikatsliste in der Zeile des vorher angelegten Signing Requests importiert werden. Damit ist das Zertifikat aktiv, allerdings wird in der Spalte Validated „No“ angezeigt, weil die SonicWall das Root-Zertifikat der Windows-CA nicht kennt. Das kann man aber einfach beheben, indem man die .cer Datei des Root-Zertifikats mit dem Button „Import“ unter der Zertifikatsliste importiert, wodurch anschließend automatisch bei dem vorher erzeugten Zertifikat Validated als „Yes“ angezeigt wird.
Wenn man die .cer Datei des Root-Zertifikats nicht hat, kann man diese in certsrv.msc durch Rechtsklick auf „CA-Namen->Properties->General->View Certificate->Details->Copy to file“ als „Base-64 encoded X.509 (.CER)“ erzeugen.
Jetzt muss man nur noch als letzter Schritt das neue Zertifikat in der SonicWall auf „Manage->SSLVPN->Server Settings“ bei „Certificate Selection“ auswählen. Achtung: Evtl. aktive NetExtender Verbindungen werden dadurch unterbrochen!