makaroni
Goto Top

PKI - Automatisierung Ausstellung von Zertifikaten

Hallo zusammen,

wir betreiben eine PKI und benötigen für viele Linux Maschinen Zertifikate. Somit müssten manuell (OpenSSL, CertSRV, ...) Zertifikate einzeln ausgestellt werden.
Das ist sehr mühsam und zeitaufwändig. Gibt es eine Möglichkeit dieses automatisiert durchzuführen? Sprich von einem dritten (Windows intregierten) Client mittels z.B. CSV Zertifikate ausstelen und diese als .pfx zu erhalten?

Vielen Dank und beste Grüße

Content-ID: 325245

Url: https://administrator.de/contentid/325245

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

131381
Lösung 131381 02.01.2017 aktualisiert um 10:03:45 Uhr
Goto Top
Jepp , Get-Certificate in der Powershell oder certreq in der CMD sind deine Freunde.

Gruß mik
makaroni
makaroni 04.01.2017 um 15:12:22 Uhr
Goto Top
Hey,

erstmal danke für deine Antwort. Die Befehle kenne ich.
Allerdings ist bei mir eher die Frage, ob es überhaupt möglich ist, dass ich von einem beliebigen Windowsrechner ein Zertifikat anfordere, dieses dann mit dem Private Key als .PFX packe. Und das dann am besten noch mit einer CSV Datei die mit x Namen betankt ist.

Der Rechner, der dieses anfordert, fordert dieses nur an, er benötigt es selbst nicht.
131381
Lösung 131381 04.01.2017 aktualisiert um 16:27:40 Uhr
Goto Top
Zitat von @makaroni:
erstmal danke für deine Antwort. Die Befehle kenne ich.
Gut.
Allerdings ist bei mir eher die Frage, ob es überhaupt möglich ist, dass ich von einem beliebigen Windowsrechner ein Zertifikat anfordere,
Ja, kein Problem, du musst dem User in deiner CA nur das Recht erteilen für das entsprechende Template Zertifikate auszustellen (ACL im TEMPLATE), dann kannst du von jeder Station dein Zertifikat mit dem User ausstellen lassen.
dieses dann mit dem Private Key als .PFX packe. Und das dann am besten noch mit einer CSV Datei die mit x Namen betankt ist.
Auch kein Problem. Mit Get-Certificate packt er das Zertifikat zwar erst in den Windows-Store, aber dort kannst du es problemlos als PFX exportieren (ebenfalls direkt mit PS) und anschließend löschen.

In diesem Skript von Frank siehst du wie das geht:
https://www.frankysweb.de/exchange-2013-assistent-fuer-zertifikate/

Für eine Schleife über eine CSV importierst du deine CSV ebenfalls mit einem Oneliner in deine Powershell
$csv = Import-CSV 'c:\Pfad\datei.csv' -Delimiter ";"  
Und machst dann mit eine Foreach-Schleife deine Zertifikatsanforderungen. Fertig ist die Laube.
makaroni
makaroni 05.01.2017 um 09:21:31 Uhr
Goto Top
Besten Dank face-smile

Damit komme ich weiter face-smile
131381
131381 05.01.2017 um 09:25:37 Uhr
Goto Top
Immer gerne face-smile
makaroni
makaroni 05.01.2017 um 14:22:40 Uhr
Goto Top
Ich habe alles soweit hinbekommen wie ich es mir vorgestellt habe (CSV fehlt noch, kommt später)
Nun würde ich gerne noch zu den DNS Einträgen den Subjectname im Zertifikat hinzufügen.
Es ist nicht zwingend notwenig, finde ich aber sauberer...

Da schreit mein Script aber immer rum, dass der String einen ungültiges x500 Attribut beinhaltet
Encode: The string contains an invalid X500 name attribute key

Folgende Zeile versuche ich auszuführen:

Get-Certificate -Template WebServer -DnsName test123 -SubjectName test222

Ohne den -SubjetName funktioniert alles super dupa. Ist es nicht möglich den mit einzubinden?!
131381
Lösung 131381 05.01.2017 aktualisiert um 14:32:00 Uhr
Goto Top
-SubjectName test222
Öhm, du weist anscheinend nicht das das Subject anders formatiert sein muss ... Bei einem x509 Subject muss immer der konkrete Feldname vorangestellt werden z.B. für den Common Name CN=BLABLA
Deswegen auch die Fehlermeldung:
The string contains an invalid X500 name attribute key

Certificate Attributes
Beispiel
CN=*.domain.com, OU=Marketing, O=FirmaXYZ, L=KÖLN, S=NRW, C=DE
makaroni
makaroni 06.01.2017 um 07:52:07 Uhr
Goto Top
Ergibt irgendwie Sinn.
Danke face-smile Nun bin ich auch hoffentlich ruhig face-smile
Wünsche Dir ein schönes Wochenende
makaroni
makaroni 27.01.2017 um 10:57:17 Uhr
Goto Top
Gibt es eine Möglichkeit, den Friendlyname beim Zertifikatsantrag noch mit einzufügen?
Get-Certificate scheint dieses nicht zu können.

Get-Certificate -Template <string> [-Url <uri>] [-SubjectName <string>] [-DnsName <string[]>] [-Credential <PkiCredential>] [-CertStoreLocation <string>] [-WhatIf] [-Confirm] [<CommonParameters>] Get-Certificate -Request <Certificate> [-Credential <PkiCredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
131381
Lösung 131381 27.01.2017 aktualisiert um 11:11:07 Uhr
Goto Top
Zitat von @makaroni:
Gibt es eine Möglichkeit, den Friendlyname beim Zertifikatsantrag noch mit einzufügen?
Get-Certificate scheint dieses nicht zu können.
Wozu brauchst du den? Den kannst du in der Certificate-MMC doch leicht anpassen.

Kannst du aber auch leicht über die Powershell nachträglich machen denn die Zertifikate kann man wie Dateien in der Powershell über das PS-Drive cert:\ ansprechen:
(get-item cert:\localmachine\my\048740C6CDDE4F4524C63264688FF297C4A3C00D).FriendlyName = "Mein tolles Zertifikat"  
den benötigten "Thumbprint (lange Zeichenfolge i.o.g. Befehl)" des neuen Zertifikats erhältst du ja beim Erzeugen im Objekt des Zertifikats.

Bedenke das der FriendlyName nur auf dem jeweiligen System erhalten bleibt auf dem du diesen änderst. Dieser ist kein Bestandteil des Zertifikats an sich.
makaroni
makaroni 27.01.2017 aktualisiert um 11:48:54 Uhr
Goto Top
Zitat von @makaroni:
Gibt es eine Möglichkeit, den Friendlyname beim Zertifikatsantrag noch mit einzufügen?
Get-Certificate scheint dieses nicht zu können.
Wozu brauchst du den? Den kannst du in der Certificate-MMC doch leicht anpassen.
Viele Applicationen benötigen mehrere Zertifikte z.B. SkypeForBusiness und in der GUI ist es dann so auf den ersten Blick nicht ersichtlich welches welches ist face-smile
Kannst du aber auch leicht über die Powershell nachträglich machen denn die Zertifikate kann man wie Dateien in der Powershell über das PS-Drive cert:\ ansprechen:
> (get-item cert:\localmachine\my\048740C6CDDE4F4524C63264688FF297C4A3C00D).FriendlyName = "Mein tolles Zertifikat"  
> 
den benötigten "Thumbprint (lange Zeichenfolge i.o.g. Befehl)" des neuen Zertifikats erhältst du ja beim Erzeugen im Objekt des Zertifikats.
Perfekt, hat funktioniert face-smile Vielen Dank
Bedenke das der FriendlyName nur auf dem jeweiligen System erhalten bleibt auf dem du diesen änderst. Dieser ist kein Bestandteil des Zertifikats an sich.
Jaein, ich kann den auf jedem System neu anpassen. Exportiere ich dann aber das Zertifikat, mit dem aktuellen FriendlyName, so wird dieser mit exportiert. Ich habe das Zertifikat gerade nochmal auf einem anderen System importiert auf dem mir nun der Friendlyname angezeigt wird, den auf einem anderen System geändert habe bevor ich es exportiert habe. Aber ich gebe dir Recht, für einen Zertifikatsrequest wird dieses nicht benötigt und dabei auch nicht gesetzt. Aber dennoch beinhaltet ja das Zertifikat ein Attribut wo dieser wohl gespeichert wird.
131381
131381 27.01.2017 aktualisiert um 12:05:02 Uhr
Goto Top
Zitat von @makaroni:
Jaein, ich kann den auf jedem System neu anpassen. Exportiere ich dann aber das Zertifikat,
Jepp, im Export-Fall ja wenn es sich um eine PFX handelt, packt MS da eigene Felder mit rein.
makaroni
makaroni 27.01.2017 um 12:09:21 Uhr
Goto Top
Danke, gut zu wissen face-smile