Verständnisfrage zu Powershell Code Signing Certificate
Hi zusammen,
ich habe mal eine Frage zu Powershell und signierten Skripten. Bei der Suche bin ich nicht so richtig schlau daraus geworden ....
Wenn ich mir ein Code Signing Certificate erstelle und damit ein Skript signiere, wird ja der Signaturblock an das Ende des Skriptes geschrieben.
Was passiert jetzt, wenn ich die Datei verändere, abspeichere und dann erneut ausführe? Ich konnte das nicht so richtig nachvollziehen ...
Prüft Powershell nur ob das eingefügte Zertifikat mit dem von mir erstellten übereinstimmt oder ist das ein Fingerprint auf die Datei?
Wenn ich eine Datei signiere erhalte ich aktuell auch immer die folgende Meldung, die wenig hilfreich ist.
Das Zertifikat wird aber an das Ende des Skriptes geschrieben.
Ist die Datei jetzt signiert oder nicht und wie kann ich das prüfen?
Danke schon mal für Erhellung
ich habe mal eine Frage zu Powershell und signierten Skripten. Bei der Suche bin ich nicht so richtig schlau daraus geworden ....
Wenn ich mir ein Code Signing Certificate erstelle und damit ein Skript signiere, wird ja der Signaturblock an das Ende des Skriptes geschrieben.
Was passiert jetzt, wenn ich die Datei verändere, abspeichere und dann erneut ausführe? Ich konnte das nicht so richtig nachvollziehen ...
Prüft Powershell nur ob das eingefügte Zertifikat mit dem von mir erstellten übereinstimmt oder ist das ein Fingerprint auf die Datei?
Wenn ich eine Datei signiere erhalte ich aktuell auch immer die folgende Meldung, die wenig hilfreich ist.
SignerCertificate Status Path
----------------- ------ ----
F83E6F3A213C4A7C8B51A0E42C52D1C184C6E3E5 UnknownError KompatibilitaetsPruefung.ps1
Ist die Datei jetzt signiert oder nicht und wie kann ich das prüfen?
Danke schon mal für Erhellung
Please also mark the comments that contributed to the solution of the article
Content-ID: 669470
Url: https://administrator.de/contentid/669470
Printed on: December 7, 2024 at 18:12 o'clock
6 Comments
Latest comment
Hi,
Wenn das Script geändert wird muss es erneut zertifiziert werden.
In den Eigenschaften wird nach Änderung das Zertifikat als invalid angezeigt.
Wenn das nicht der Fall wäre könnte jeder jedes signierte Script nehmen und missbrauchen.
Bin mir gerade unsicher wie das ermittelt wird, hat aber vermutlich etwas mit dem hash des scriptes zutun?
Da kann bestimmt jemand anderes genaueres sagen.
Google sagt:
Any changes in the code will lead to a different hash value, making tampering detectable. Integrity Verification: End-users can verify the code's integrity by generating a hash from the downloaded code and comparing it with the signed hash. If both the hashes match, the code will be verified as unaltered.
Also anscheinend der hash...
Damit solltest du mehr Infos bekommen:
Nachtrag für deine Fehlermeldung:
Anscheinend hat er ein Problem das Zertifikat zum signieren zu benutzen.
Also hast du hier noch ein anderes Problem?
Zertifikat kannst du auch im Explorer sehen wenn du dir die Dateieigenschaften anzeigen lässt.
Vg
Wenn das Script geändert wird muss es erneut zertifiziert werden.
In den Eigenschaften wird nach Änderung das Zertifikat als invalid angezeigt.
Wenn das nicht der Fall wäre könnte jeder jedes signierte Script nehmen und missbrauchen.
Bin mir gerade unsicher wie das ermittelt wird, hat aber vermutlich etwas mit dem hash des scriptes zutun?
Da kann bestimmt jemand anderes genaueres sagen.
Google sagt:
Any changes in the code will lead to a different hash value, making tampering detectable. Integrity Verification: End-users can verify the code's integrity by generating a hash from the downloaded code and comparing it with the signed hash. If both the hashes match, the code will be verified as unaltered.
Also anscheinend der hash...
Damit solltest du mehr Infos bekommen:
Get-AuthenticodeSignature .\test.ps1 | FormatList
Nachtrag für deine Fehlermeldung:
Anscheinend hat er ein Problem das Zertifikat zum signieren zu benutzen.
Also hast du hier noch ein anderes Problem?
Zertifikat kannst du auch im Explorer sehen wenn du dir die Dateieigenschaften anzeigen lässt.
Vg
- Wie wurde das Zertifikat erstellt, mit welchen Eigenschaften ? KeyUsage /ExtendedKeyUsage
- Wurde das Zertifikat in den "TrustedPublishers" Zertifikatsstore der Maschine importiert?
Bei UnknownError ist i.d.R. eines der beiden Punkte oben fehlerhaft umgesetzt worden.
Was passiert jetzt, wenn ich die Datei verändere, abspeichere und dann erneut ausführe?
Du musst es erneut signieren. Jede Änderung am Skript beschädigt die Signatur und diese wird ungültig. Das ist ja der Sinn und Zweck der Signatur. Es wird nur ausgeführt wenn es seit der Signierung unverändert ist, man beglaubigt damit das das Skript und durch Prüfung der Signatur lässt sich feststellen ob es durch dritte manipuliert oder beschädigt wurde.Gruß catrell
Naja, die Meldung ist jetzt wieder eine Andere...
deinem Zertifikat wird nicht vertraut.
Musst das Zertifikat im Computer oder User Zertifikatsstore unter "Trusted Publishers" hinterlegen wenn es nur ein self-signed Cert ist. Evtl. noch als Trusted Root Certification Authority, das müsstest du aber mal probieren.
Wenn du eine richtige CA verwendest musst du die Zertifikats-Chain korrekt hinterlegen, damit denen überhaupt vertraut wird und das Signing Cert bei den Clients im Trusted Publishers Store hinterlegen.
Ich glaube es wäre sinnvoll sich etwas in Zertifikate reinzulesen...
VG
deinem Zertifikat wird nicht vertraut.
Musst das Zertifikat im Computer oder User Zertifikatsstore unter "Trusted Publishers" hinterlegen wenn es nur ein self-signed Cert ist. Evtl. noch als Trusted Root Certification Authority, das müsstest du aber mal probieren.
Wenn du eine richtige CA verwendest musst du die Zertifikats-Chain korrekt hinterlegen, damit denen überhaupt vertraut wird und das Signing Cert bei den Clients im Trusted Publishers Store hinterlegen.
Ich glaube es wäre sinnvoll sich etwas in Zertifikate reinzulesen...
VG