Für heute hatte ich geplant, dass eines unserer Projekte automatisch mit Hilfe von Microsoft WebDeploy auf einem IIS veröffentlicht werden sollte. Die Applikation wurde mit TeamCity und MSBuild-Scripten erstellt und somit hatte ich auch bereits die passende *.deploy.cmd-Datei generiert bekommen.
Als ich danach das Deployment erst einmal manuell testen wollte, bekam ich den Fehler ERROR_CERTIFICATE_VALIDATION_FAILED geliefert. Das war auch klar, da der Webverwaltungsdienst bei der Installation ein eigenes Zertifikat erstellt, dieses aber natürlich von meiner Arbeitsstation mangels autorisierter Root-CA nicht erkannt wird. An dieser Stelle hätte ich natürlich das Standard-Zertifikat in meinem eigenen Zertifikatspeicher und danach im Zertifikatespeicher des TeamCity-Benutzerkontos installieren können. Ist aber natürlich nicht Sinn der Sache, da das Root-Zertifikat unseres Domänen-Controllers sowieso per Gruppenrichtlinie auf alle Clients veröffentlicht wird und wir somit auch direkt von unserer CA ein Zertifikat ausstellen lassen können.
Die Option, “-allowUntrusted=true” an die *.deploy.cmd zu hängen, war übrigens nicht erfolgreich, da Microsoft im Batch-Script geschlampt hat und die Gleichheitszeichen durch Leerzeichen ersetzt werden.
Wie dem auch sei: Ich entschloss mich also dazu, ein Zertifikat auszustellen. Zuerst überprüfte ich die einzelnen Zertifikatespeicher auf dem Webserver. Der Webverwaltungsdienst greift dazu auf die Zertifikate des Computerkontos zu und präsentiert sie dann in der Auswahlliste.
Ein neues Zertifikat zu erstellen gestaltete sich nun schwieriger als ich anfangs dachte. Per Weboberfläche des Certifcation-Service vom Domänen-Controller konnte ich mir zwar ein Webserver-Zertifikat ausstellen lassen und dieses auch im Computerkonto installieren, allerdings lies sich nach dem Auswählen des Zertifikats im Server-Manager unter Rollen > Webserver (IIS) > Internetinformationsdienste > $Instanz > Verwaltungsdienst der Dienst nicht mehr starten. Die Ereignisanzeige meldete, dass der private Schlüssel nicht exportiert worden war. Dies scheint standardmäßig bei den Webserver-Zertifikaten nicht der Fall zu sein.
Ich folgte nun einem anderen Weg und rief dazu in der Zertifikate-MMC unter Zertifikate (Lokaler Computer) > Eigene Zertifikate > Zertifikate > Rechtsklick “Alle Aufgaben” > Neues Zertifikat anfordern auf.
Dies sorgt dafür, dass man mit Hilfe eines kleinen Tools direkt bei der CA bzw. DC ein Certification Request einreichen kann. Auf der zweiten Seite bekommt man die verfügbaren Zertifikatsvorlagen zur Verfügung, die für den gerade ausgewählten Zertifikatespeicher benutzt werden können. Da ich beim Aufsetzen der CA nur die Kopien von den Vorlagen Benutzer, Computer und Key Recovery Agent gemacht habe, stand für das Computerkonto nur die Vorlage Computer zur Verfügung.
Schnell die MMC Zertifikatsvorlagen aufgerufen, als Domänen-Administrator mit der Zertifizierungsstelle verbunden und mit Rechtsklick auf Webserver > Doppelte Vorlage eine neue Vorlage erstellt. Die Gültigkeitsdauer setzte ich auf einige Jahre hoch und wählte unter dem Tab Anforderungsverarbeitung die Option Exportieren von privatem Schlüssel zulassen.
Nach dem Speichern hätte ich nun meine Zertifikatsvorlage beim Certification Request eigentlich angezeigt bekommen müssen. Tat es aber nicht – ich bekam nur die Fehlermeldung “Sie besitzen keine Berechtigung zum Anzeigen dieses Typs von Zertifikat“. Nach dem Überprüfen der Einstellungen war ich etwas ratlos, dass ich diesen Fehler bekam. An sich hatte alles gestimmt. Ich war ja Domänen-Administrator und hatte dementsprechend für diese Zertifikatsvorlage durchaus eine Berechtigung (Tab Sicherheit in der von mir duplizierten Zertifikatsvorlage).
Diese Berechtigungen waren aber nicht ausreichend. Ich stellte ja schließlich für das Computerkonto ein Zertifikat aus, also musste der Computer im Sicherheit-Tab die Rechte Lesen, Schreiben und Registrieren bekommen.
Nun bekam ich auch die Zertifikatsvorlage angezeigt, wählte bei den zusätzlichen Einstellungen als Allgemeiner Name den internen FQDN des Webservers und überprüfte, dass der private Schlüssel exportiert wird.
Im Anschluss konnte ich das so eben erstellte Zertifikat auch bei den Eigenschaften des Verwaltungsdiensts im IIS auswählen.
0 Comments