ramsess 10 Geschrieben 22. Mai 2012 Melden Teilen Geschrieben 22. Mai 2012 Hi @ll, meine Aufgabenstellung von meinem Chef ist ganz einfach: - alle Powershell Scripte dürfen nur im "Set-ExecutionPolicy allsigned" ausführbar sein - Hört sich einfach an und ich habe auch relativ schnell diese Link gefunden. Aber irgendwie komme ich da nicht weiter. Eckdaten die mir wichtig erscheinen Das AD ist ein W2K8 R2 mit einem eigenem Lizenzserver der das Root Zertifikat unter anderem hält. Dort habe ich eine Codesignatur Zertifikat ausgestellt und es auf einem Testclient entsprechend der Anleitung angefordert. Das erstellte Script kann ich aber nicht so wie in der Anleitung dargestellt signieren (auch wenn ich die angeführte Variable $zertifikat in $zertifikate abändere). Nach dem Befehl: $zertifikate=dir cert:\ -recurse –codesign habe ich mit einem echo $zertifikate an der Konsole das gewünschte Zertifikat gesehen. Trozdem spuckt mir der nachfolgende Befehl Set-AuthenticodeSignature C:\powershell\Signaturtest.ps1 $zertifikat die Fehlermeldung Set-AuthenticodeSignature : "System.Object[]" kann nicht in den Typ "System.Sicurity.Cryptography.X509certificates.X509Certificate2" konvertiert werden, der für den Parameter "Certificate" erorderlich ist. Die angegebene Methode wird nicht unterstützt. Bei Zeile:1 Zeichen:26 aus. Und jetzt bin ich auch nach intensiver Suche mit meinem Latein am ende. :confused: Hat jemand das Problem schon mal gehabt oder ist mein Vorgehen komplett falsch? Gruß Ramses( s) Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 22. Mai 2012 Melden Teilen Geschrieben 22. Mai 2012 Nach dem Befehl: $zertifikate=dir cert:\ -recurse –codesign habe ich mit einem echo $zertifikate an der Konsole das gewünschte Zertifikat gesehen. Trozdem spuckt mir der nachfolgende Befehl Set-AuthenticodeSignature C:\powershell\Signaturtest.ps1 $zertifikat die Fehlermeldung Ist das nur ein Fehler beim copy&paste oder hast du wirklich einmal $zertifikat und ein anderes mal $zertifikate benutzt? Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 23. Mai 2012 Autor Melden Teilen Geschrieben 23. Mai 2012 Ist das nur ein Fehler beim copy&paste oder hast du wirklich einmal $zertifikat und ein anderes mal $zertifikate benutzt? In der Anleitung steht diese Befehlsfolge. Wenn es so ausgeführt wird, ist die Fehlermeldung ähnlich. Nach ein wenig Suchen ist es schon aufgefallen das dort ein "E" fehlt. ;) Mit dem korrektem Namen der Variable wird die von mir aufgeführte Fehlermeldung ausgegeben. ramses( s) Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 23. Mai 2012 Melden Teilen Geschrieben 23. Mai 2012 Hi, kann es sein, daß mehr als ein Zertifikat in "$zertifikate" als Objekt referenziert ist? Viele Grüße olc Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 23. Mai 2012 Autor Melden Teilen Geschrieben 23. Mai 2012 Hi, kann es sein, daß mehr als ein Zertifikat in "$zertifikate" als Objekt referenziert ist? Viele Grüße olc Hi olc, ja ist möglich - ich habe mal mit echo $zertifikate mir angeschaut was darin steckt. soweit ich das verstehe liegt dort auch das root zertifikat. ist dies ein problem? vg ramses ( s) Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 23. Mai 2012 Melden Teilen Geschrieben 23. Mai 2012 Hi, ja - denn Du mußt ein konkretes "Objekt" (sprich Zertifikat) angeben, wenn Du per Set-AuthenticodeSignature signieren möchtest. Mittels "where-object" hinter einer Pipe kannst Du filtern, wie genau sieht denn die Ausgabe von folgendem Befehl aus? Get-ChildItem cert:\ -recurse –codesign | format-list * Etwas genauer "fokussieren" kannst Du mit: Get-ChildItem -Path cert:\[b]CurrentUser\my [/b]-CodeSigningCert Vielleicht erledigt sich das Problem damit sogar direkt. Ggf. "problematische Informationen" aus dem Export entfernen, bevor Du es hier postest. :) Viele Grüße olc Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 24. Mai 2012 Autor Melden Teilen Geschrieben 24. Mai 2012 Hi, ich habe jetzt noch mal versucht das ganze nachzuvollziehen. @tesso Die Fehlermeldung bei einem falschen Pfad für das Zertifikat lautet: Set-AuthenticodeSignature: Das Argument kann nicht an den Parameter "Certificate" gebunden werden, da es NULL ist. @olc Ich habe es hin bekommen mit folgenden Befehlen: $cert = Get-ChildItem cert:\CurrentUser\My –codesigning Set-AuthenticodeSignature C:\scripts\my-test.ps1 $cert Die Groß- Kleinschreibung ist bei der Pfad Angabe zu beachten. Das war´s dann :) Danke an alle die drüber nachgedacht haben (insbesondere an olc) VG ramses ( s) Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 24. Mai 2012 Melden Teilen Geschrieben 24. Mai 2012 Optimal, obwohl mich das mit der Groß-/Kleinschreibung wundert. Danke für Deine Rückmeldung! :) Viele Grüße olc Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.