michi.wtr
Goto Top

Verteilen von Zertifikaten über GPO (Gruppenrichtlinien) an Domänenbenutzer

Hallo zusammen,

Ich bin neu im IT-Bereich und kenne mich leider mit Zertifikaten, Gruppenrichtlinien und ähnlichem gar nicht aus... face-smile
Nun habe ich aber für unsere Domäne ein PowerShell Skript geschrieben, welches ich (denke ich) über die GPO verteilen muss.

Verteilen von Zertifikaten an Clientcomputer mithilfe von Gruppenrichtlinie - Microsoft Docs

Das hört sich ja eigentlich ziemlich einfach an, jedoch wird hier das Zertifikat an Clientcomputer verteilt.


Daher nun meine Frage:
Kann ich diese Zertifikate auch an die Domänenbenutzer verteilen, sodass dieser die PowerShell Skripts an jedem Computer ausführen kann, an welchem er sich anmeldet?
Denn wenn ich zum Importieren (Schritt 4) anstelle des Pfades:
Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Richtlinien für öffentliche Schlüssel\Vertrauenswürdige Stammzertifizierungsstellen
den Pfad benutze:
Benutzerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Richtlinien für öffentliche Schlüssel\
dann gibt es den Ordner Vertrauenswürdige Stammzertifizierungsstellen nicht. Deshalb hatte ich versucht den Ordner Vertrauenswürdige Personen zu importieren.

Leider hat das Ganze wie erwartet nicht funktioniert. Wenn ich mich nun mit einem Client angemeldet habe, so habe ich im MMC (Microsoft Management Console) das Zertifikat im Ordner für Vertrauenswürdige Personen leider nicht gefunden. Auch mit
dir cert:\CurrentUser\TrustetPeople
war das Zertifikat leider nicht zu sehen.

Natürlich habe ich das Gruppenrichtlinienobjekt auch nicht bei den Computern, sondern in Ordner der Domänenbenutzer hinzugefügt, welche das Zertifikat erhalten sollten. Gesehen habe ich dass dann automatisch noch ein Gruppenrichtlinienobjekt im Ordner Gruppenrichtlinienobjekte erzeugt wird und mein hinzugefügtes Objekt wohl nur den Domänenbenutzern zugeordnet wird. Hoffe das habe ich richtig verstanden face-smile . Muss ich dieses Objekt dann noch irgendwie woandershin verlinken/zuordnen?

Und weshalb habe ich bei Benutzerkonfigurationen im Ordner Richtlinien für öffentliche Schlüssel nur die 2 Unterordner Organisationsvertrauen und Vertrauenswürdige Personen, ich meine wenn ich mit PowerShell
dir cert:\CurrentUser
eingebe, dann kommen da weitaus mehr als nur 2 Ordner face-smile. 14 um genau zu sein, jedoch sehen ich im MMC SnapIn für Zertifikate für das Benutzerkonto nur 13 Unterordner... Ist schon alles ein wenig verwirrend.

Content-Key: 3884374308

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

Printed on: April 28, 2024 at 14:04 o'clock

Member: Razer1
Razer1 Sep 09, 2022 at 08:20:31 (UTC)
Goto Top
Moin,

was sagt den ein gpresult /r ? Wird die GPO überhaupt angewandt?

Gruß
Member: DerMaddin
DerMaddin Sep 09, 2022 at 08:26:17 (UTC)
Goto Top
Ich denke du verwechselst da Etwas. Der verlinkte MS Artikel bezieht sich auf das Verteilen von Computer Zertifikaten, z.B. einer Stammzertifizierunsgstelle. Das was du meinst, ist das Verteilen von individuellen Computer- bzw. Benutzerzertifikaten.

Dies geschieht dann in einer GPO über den von dir genannten Pfad...

Benutzerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Richtlinien für öffentliche Schlüssel\Zertifikatsdienstclient - Automatische Registrierung

Hierzu wird in der Regel ein lokaler an die AD angebundener CA-Server benötigt, der die Zertifikate erstellt, ausgibt und erneuert. Das ist die Server-Rolle "AD Zertifikatsdienste", die hier benötigt wird. Es ist nicht ganz einfach und sollte gut geplant werden, denn später kann man keine Änderungen mehr machen, wenn die CA einmal eingerichtet wurde.

Schau mal hier: https://techdirectarchive.com/2021/01/28/certification-authority-how-to- ...
Member: michi.wtr
michi.wtr Sep 09, 2022 at 09:52:50 (UTC)
Goto Top
Zitat von @Razer1:

was sagt den ein gpresult /r ?

Wo muss ich das denn anwenden ^^ ? Kenne den Befehl noch nicht, soll ich den auf dem Server Domain-Controller ausführen oder an einem Client davon der das Zertifikat erhalten sollte?
Member: michi.wtr
michi.wtr Sep 09, 2022 updated at 10:01:16 (UTC)
Goto Top
Zitat von @DerMaddin:

Ich denke du verwechselst da Etwas. Der verlinkte MS Artikel bezieht sich auf das Verteilen von Computer Zertifikaten, z.B. einer Stammzertifizierunsgstelle. Das was du meinst, ist das Verteilen von individuellen Computer- bzw. Benutzerzertifikaten.

Ah okay, das würde schonmal einiges Erklären, danke dir face-smile


Zitat von @DerMaddin:

Hierzu wird in der Regel ein lokaler an die AD angebundener CA-Server benötigt, der die Zertifikate erstellt, ausgibt und erneuert. Das ist die Server-Rolle "AD Zertifikatsdienste", die hier benötigt wird. Es ist nicht ganz einfach und sollte gut geplant werden, denn später kann man keine Änderungen mehr machen, wenn die CA einmal eingerichtet wurde.

Wie meinst du das man kann keine Änderungen mehr machen, wenn die CA einmal eingerichtet wurde? Heißt ich kann die beim Einrichten ausgewählten Einstellungen nicht mehr ändern oder ähnliches? Kann auch gut sein dass wir bereits einen CA-Server haben, das müsste ich mal Nachfragen. Bin nur Auszubildender Software-Entwickler, habe also von vielem noch keinen Plan, und darf natürlich mit meinen Konten auch noch nicht alles managen, aber dafür müsste ich dann nächste Woche in der Firma mal nachfragen.

Werde mir natürlich deinen Link gleich mal durchlesen und schauen ob sich davon ein paar Fragen schon von selbst beantworten.
Member: DerMaddin
DerMaddin Sep 09, 2022 at 10:25:56 (UTC)
Goto Top
Schau mal hier: https://www.msxfaq.de/signcrypt/setupca.htm Der Artikel ist zwar etwas älter aber umschreibt schon viele wichtige Sachen. Probleme kann es geben, wenn die CA irgendwann von einen auf einen anderen Server migriert werden sollte, Änderungen an den CA-Diensten erfolgen etc. Ein CA und/oder Zertifikatschaos kann am Ende dazu führen, dass die Clients und/oder Server nicht mehr miteinander "sprechen", da sie der CA nicht vertrauen bzw. das Zertifikat des Gegenüber nicht verifizieren können.

Für welchen Einsatzzweck sollen bei euch Zertifikate eingesetzt werden?

Ich habe bei uns eine CA und NPS-Rolle installiert, damit wir das WLAN mit WPA2-Enterprise ausrollen können via GPO und die Authentifizierung über User-/Computerzertifikat erfolgen kann und zusätzlich damit alle unsere internen Server mit einem SSL-Zertifikat (HTTPS-Zugriffe) ausgestattet sind. Weitere Einsatzmöglichkeiten stehen offen.
Member: michi.wtr
michi.wtr Sep 09, 2022 updated at 11:34:51 (UTC)
Goto Top
Also ich bin mir Sicher dass wir eine CA bereits haben, sehr wahrscheinlich auf einem Server auf dem ich noch keinen Zugriff habe, da ich die Ausbildung erst seit einer Woche mache ^^ . Aber auf jeden Fall haben wir hunderte Zertifikate bei uns sowohl im Ordner
Cert:\LocalMachine\Root
als auch im Ordner
Cert:\LocalUser\Root
Was das genau für Ordner sind, habe ich keine Ahnung. Diese werden nur in PowerShell angezeigt, keine Ahnung was genau das überhaupt für eine Ordnerstruktur ist, ob das nur ein Key oder sowas für irgendwelche Ordner sind, denn mit der CMD allein findet man da nichts.

Der PSParentPath ist auf jeden Fall
Microsoft.PowerShell.Security\Certificate::LocalMachine\Root

Da befinden sich dieselben Zertifikate wie im Ordner Vertrauenswürdige Zertifizierungsstellen im Computerzertifikate verwalten Tool.

Das Zertifikat welches ich benötige ist im Prinzip ganz simpel, da es lediglich für eine Codesignatur für PowerShell Skripte dient. Lokal habe ich das ganze schon getestet und funktioniert wunderbar.

Dafür habe ich mit der PowerShell ein neues Zertifikat erstellt:
$cert = New-SelfSignedCertificate -Subject "CN=PowerShellSigning" -Type CodeSigningCert -HashAlgorithm "sha256" -CertStoreLocation "Cert:\CurrentUser\My"  

Das Zertifikat hatte ich mal so zur Probe erstellt, bestimmt lässt sich das auch schöner dann mit einer CA erstellen dann, denn mir wird bei Ausgestellt von und für beides mal PowerShellSigning angezeigt im Computerzertifikate verwalten Tool. Jedenfalls wenn ich dieses Zertifikat exportiert habe und im Ordner Vertrauenswürdige Zertifizierungsstellen hinzugefügt habe (ohne privaten Schlüssel, denke den privaten braucht man zum signieren, den öffentlichen nur zum ausführen) so konnte ich PowerShell Skripte die ich mit dem Zertifikat signiert habe lokal ausführen.

Set-AuthenticodeSignature "Laufwerk:\Pfad\zum\Skript.ps1" $cert  

Damit habe ich das Skript dann signiert und konnte es unter AllSigned Richtlinien ausführen. Deshalb dachte ich, ich müsse nur mein Zertifikat für das ich den privaten Schlüssel habe (kann ich ja auch auf dem Domain-Controll-Server machen, damit man mit dem die Skripte signieren kann) für alle Domänenbenutzer in das Rootverzeichnis (Cert:\LocalUser\Root) hinzufügen, damit diese auch das Skript ausführen können.

PS: Falls wir schon eine Zertifizierungsstelle hätten wüsste ich im Moment auch gar nicht wie man diese findet, denn mit Win+"Zertifizierung" o.ä. findet Windows nichts. Oder müsste ich dafür in die AD und dort nach etwas suchen?
Member: DerMaddin
Solution DerMaddin Sep 09, 2022 at 11:52:10 (UTC)
Goto Top
Verstehe, es geht um Code-Signatur. Nun deine Vorgehensweise mit dem selbst erstellen Zertifikat funktioniert dann aber nur lokal, da die CA in dem Fall der ausstellende Server selbst ist. Du müsstest dieses Zertifikat auf jedem Client als Root CA Zertifikat installieren.

Ob und wo eine CA in der Windows-Domäne installiert ist, kannst du mit "certutil" feststellen. Einfach PS oder cmd und dann folgendes eingeben (ohne die ''): 'certutil -config - -ping'

Es öffnet sich ein neues Fenster, dass dir ggf. anzeigt was die CA ist, wenn keine existiert, dann kein Ergebnis. Alternativ in "Active Directory Benutzer und Computer" Konsole nach der Gruppe "Zertifikatherausgeber" suchen, dort ist dann der CA-Server eingetragen.
Member: michi.wtr
michi.wtr Sep 09, 2022 at 12:14:58 (UTC)
Goto Top
Nun deine Vorgehensweise mit dem selbst erstellen Zertifikat funktioniert dann aber nur lokal, da die CA in dem Fall der ausstellende Server selbst ist. Du müsstest dieses Zertifikat auf jedem Client als Root CA Zertifikat installieren.

Genau das war so ungefähr ja die Idee, dachte wenn ich dieses Zertifikat über die Gruppenrichtlinien verteile dann wär das Direkt bei jedem Domänenbenutzer wenn er sich auf einem Computer anmeldet installiert oder eben verfügbar. Das war zumindest mein Wunschdenken wenn das funktioniert ^^

certutil -config - -ping

Liefert mir tatsächlich eine Zertifizierungsstelle: ...-CA und einen Computer: SERVER.....
Dann werde ich mir da am Montag mal Zugang verschaffen zu dem Server um das zu testen. Wie genau sieht denn eine Zertifizierungsstelle aus und wie finde ich diese? Den Namen der Zertifizierungsstelle habe ich ja nun, aber das hört sich ja nicht gerade nach einem Namen für eine Applikation an face-smile. Muss ich diese auch mit mmc.exe als SignIn dann importieren zum Bearbeiten um ein Zertifikat zu erstellen?

Aber dazu werde ich dann bestimmt auch in den Anleitungen was finden die du mir gegeben hast, oder kann dann mal noch ein wenig weiter forschen, da ich nun auch weiß nach was ich suchen muss. Vielen lieben Dank dir ;D
Member: DerMaddin
DerMaddin Sep 09, 2022 at 12:27:56 (UTC)
Goto Top
Aussehen? *lach* Nun ja, ein "normaler" Windows Server mit der Rolle "AD-Zertifikatsdienste" und evtl. noch weiteren wie z.B. NPAS. Wenn du auf dem betreffenden Server angemeldet bist, dann nach "Zertifizierungsstelle" suchen.

Die Konsole ist relativ trival aufgebaut. Primär wichtig sind die Ordner "Ausgestellt Zertifikate" und die "Zertifikatsvorlagen". Ich würde aber hier empfehlen evtl. jemanden mit Erfahrung dran zu lassen, vor allem wenn dir nicht bekannt ist wie das Ganze aufgesetzt ist. Vielleicht gibt es jemanden bei euch in der IT der davon Kenntnis hat?