tyradux
Goto Top

Codesigning-Zertifikat unter Vertrauenswürdige Herausgeber, PowerShell vertraut trotzdem nicht

Hallo Zusammen,

mal wieder ein kleines Problemchen.

Ich bin gerade dabei, PowerShell-Scripte zu schreiben. Funktioniert soweit gut. Diese möchte ich nun gerne signieren und die ExecutionPolicy sämtlicher Systeme auf "AllSigned" stellen. Passt soweit.

Nun ist es so, dass ich ein Zertifikat erstellt und per GPO verteilt habe. Die Clients haben dieses bekommen, es wird auch unter den vertrauenswürdigen Herausgebern angezeigt. Jetzt signiere ich das PowerShell-Script mittels Idera PowerShell Professional Plus. Wenn ich das Script nun aber ausführen möchte, wird angezeigt, dass dem Zertifikat nicht vertraut wird.

Das Ganze habe ich erst in einer VMware-Umgebung getestet, bevor ich es auf dem Produktivsystem genau gleich ausgerollt habe. Unter VMware hat's funktioniert, im Produktivsystem nicht.

Ich weiß zur Zeit auch gar nicht, wo ich beginnen soll, zu suchen.

Wir verwenden Windows Server 2008 R2 und Windows 7 Clients.

Any Tipps?

Update:
Ich habe eben herausgefunden, dass der Unterschied darin lag, dass ich in der Testumgebung direkt das Windows-Eigene Code Signing-Zertifikat verteilt habe. In der Produktivumgebung habe ich dieses Zertifikat dupliziert und dieses dann verteilt. Wenn ich in der Testumgebung das Zertifikat ebenso dupliziere, exportiere und per GPO verteile, traut PowerShell diesem ebenso nicht.
Das Interessante dabe ist, dass ich mit der selben Methode ein Zertifikat für die Paketerstellung für WSUS verteilt habe, da funktioniert alles Reibungslos. PowerShell scheint die Zertifikate irgendwie anders zu behandeln. Oder muss ich hier noch etwas genaues beachten?

mfg
Simon

Content-Key: 213697

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

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

Member: colinardo
colinardo Aug 08, 2013 at 11:33:08 (UTC)
Goto Top
Hallo Simon,
ist dein Zertifikat selbst erstellt oder von einer offiziellen Stelle(Verisign, etc) ?
Wenn es selbst erstellt ist, ist das Root-Zertifikat der Zertifizierungsstelle auch auf den Clients vorhanden ?
Ansonsten probier mal diese Variante zum signieren:
http://www.hanselman.com/blog/SigningPowerShellScripts.aspx

Grüße Uwe
Member: tyradux
tyradux Aug 08, 2013 at 14:04:18 (UTC)
Goto Top
Hallo Uwe,

das Zertifikat ist selbst erstellt und ja, das Root-Zertifikat unserer CA ist ebenso auf den Clients. Ich habe es sicherheitshalber sogar auch noch per GPO verteilt.

Die Makecert-Variante möchte ich eigentlich nicht verwenden, da ich meine CA als Zertifizierungsstelle haben möchte. Es muss doch auch so irgendwie funktionieren. Irgendwie denke ich, habe ich da einfach noch etwas beim duplizieren und verteilen des Zertifikats übersehen.
Member: baer02
baer02 Aug 15, 2013 at 14:45:01 (UTC)
Goto Top
Hallo Simon,

ich beschäftige mich aktuell mit dem Thema. Ich habe ein Root-Zertifikat (Root.pvk - privat und Root.cer - öffentlich) erstellt und von dem ein neues Zertifikat "abgeleitet", welches dann im Zertifikatsspeicher gelandet ist. Davon habe ich dann wiederum eine öffentliche Zertifikatsdatei (michael.cer) exportiert.

Ziel ist ein Root-Zertifikat zu haben und davon Mitarbeiter-Zertifikate abzuleiten, die dann zum Signieren von Code benutzt werden.

Um einen Test durchzuführen, habe ich auf einem zweiten Rechner Root.cer in den Zertifikatsspeicher "Vertrauenswürdige Stammzertifizierungsstellen" importiert. Auf diesem Rechner 2 habe ich vorher mit erhöhten Rechten "Set-ExecutionPolicy AllSigned" ausgeführt.

Wenn ich nun ein Skript mit meinem Zertiifkat (michael.cer) auf Rechner 1 signiere und dann testweise auf Rechner 2 ausführen möchte, mache ich das im Explorer mit einem rechten Mausklick und die Auswahl "Mit Powershell ausführen".

Dann erscheint die Frage: "Möchten Sie Software dieses nicht vertrauenswürdigen Herausgebers ausführen?" mit unterschiedlichen Antwortoptionen. Wenn ich die Option A (Immer ausführen) auswähle, wird dadurch die Signatur (michael.cer) dem Zertifikatsspeicher (Aktueller Benutzer) hinzugefügt. Wenn ich das Zertifikat dort lösche erscheint beim nächsten Mal wieder die Abfrage.

Es funktioniert auch, wenn ich den Zertifikatsspeicher (Lokaler Computer) wähle, offenbar gibt es einen Unterschied zwischen signiert und vertrauenswürdig.

Es funktioniet übrigens auch nicht, wenn ich Root.cer zu den Vertrauenswürdigen Herausgebern hinzufüge, obwohl die Ausführung des Skriptes nur mit Root.cer in der Vertrauenswürdigen Stammzertifizierungsstelle grundsätzlich gelingt, man wird lediglich gefragt, ob man dem Herausgeber CN=Michael vertraut.

Ich habe ein wenig ausführlicher geschrieben, was ich gemacht habe, weil das möglicherweise noch andere lesen... face-smile

Viele Grüße Michael