Timestamp für Selfisgned Codesign Zertifikat
Hallo,
ich stehe vor folgenden Problem:
Ich möchte einen Timestamp zu einem Selfsigned Codesign Zertifikat hinzufügen.
Wie ist dort die korrekte Vorgehensweise?
Als erstes habe ich ein Codesign Zertifikat wie folgt erstellt:
Wie füge ich dort nun einen Timestamp ein?
Ich hatte durch Recherche mal versucht, folgenden Parameter anzuwenden:
Nur dann wird das Zertifikat nicht mehr als "Codesignatur" sondern als "Zeitstempel" angezeigt. Ist das so richtig?
Danke!
ich stehe vor folgenden Problem:
Ich möchte einen Timestamp zu einem Selfsigned Codesign Zertifikat hinzufügen.
Wie ist dort die korrekte Vorgehensweise?
Als erstes habe ich ein Codesign Zertifikat wie folgt erstellt:
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=ZertifikatTest" -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -NotAfter (Get-Date).AddMonths(120)
Wie füge ich dort nun einen Timestamp ein?
Ich hatte durch Recherche mal versucht, folgenden Parameter anzuwenden:
–TextExtension @("2.5.29.37={text} 1.3.6.1.5.5.7.3.8")
Nur dann wird das Zertifikat nicht mehr als "Codesignatur" sondern als "Zeitstempel" angezeigt. Ist das so richtig?
Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 546840
Url: https://administrator.de/contentid/546840
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar
Sers,
einen Timestamp Server referenzierst du beim Signieren von Daten. Der Timestamp funktioniert zusätzlich zu deinem Zertifikat und, damit die Signierung auch nach Ablauf deines Zertifikats noch gültig ist. Er beglaubigt damit nicht die Daten an sich, sondern den Zeitpunkt der Beglaubigung der Daten, und stellt somit sicher, dass die Daten signiert wurden bevor das Zertifikat abgelaufen ist, oder widerrufen wurde.
Schau dir mal das PowerShell cmdlet zur Signierung von Daten an: Set-AuthenticodeSignature:
Der Parameter -Certificate definiert das Zertifikat
Der Parameter -TimestampServer den TimeStamp Server. Dafür kannst du beispielsweise http://timestamp.globalsign.com/scripts/timstamp.dll verwenden, oder http://tsa.startssl.com/rfc3161
Theoretisch könntest du für jede neue Signatur dasselbe Zertifikat und einen unterschiedlichen Timestamp Server verwenden.
Grüße,
Philip
einen Timestamp Server referenzierst du beim Signieren von Daten. Der Timestamp funktioniert zusätzlich zu deinem Zertifikat und, damit die Signierung auch nach Ablauf deines Zertifikats noch gültig ist. Er beglaubigt damit nicht die Daten an sich, sondern den Zeitpunkt der Beglaubigung der Daten, und stellt somit sicher, dass die Daten signiert wurden bevor das Zertifikat abgelaufen ist, oder widerrufen wurde.
Schau dir mal das PowerShell cmdlet zur Signierung von Daten an: Set-AuthenticodeSignature:
Der Parameter -Certificate definiert das Zertifikat
Der Parameter -TimestampServer den TimeStamp Server. Dafür kannst du beispielsweise http://timestamp.globalsign.com/scripts/timstamp.dll verwenden, oder http://tsa.startssl.com/rfc3161
Theoretisch könntest du für jede neue Signatur dasselbe Zertifikat und einen unterschiedlichen Timestamp Server verwenden.
Grüße,
Philip
Mit deinen Versuchen bist du leider auf dem Holzweg:
Du versuchst ein Zertifikat zu signieren. Das geht nicht, das Zertifikat wurde bereits von der Stammzertifizierungsstelle signiert. (Oder im Falle eines Selfsigned einfach ohne zusätzliche Signierung erstellt.
Nachträglich lässt sich hier nichts mehr ändern.
Der TimeStamp Server wird zusammen mit dem CodeSigning Zertifikat bei der Signierung einer Datei verwendet. Diese Datei kann ein PowerShell Skript sein, ein Word Dokument, oder sonst irgend eine andere Datei. Aber niemals ein anderes Zertifikat.
Zertifikate werden von Zertifizierungsstellen ausgestellt und dabei signiert. Ein TimeStamp Server ist dabei nicht relevant.
Dabei wirst du jedes Mal nach dem Passwort für die PFX Datei mit dem Code Signing Zertifikat gefragt.
Mit obigem Code wird beglaubigt, dass die Datei "C:\Test\FileToBeSigned.abc" die Signierung mit dem Zertifikat "TheCodeSigningCertificate.pfx" tatsächlich zum Zeitpunkt (z.B. 24.02.2020) stattfand.
Solange "TheCodeSigningCertificate.pfx" gemäß dem Beispiel am 24.02.2020 noch gültig (nicht abgelaufen, nicht widerrufen) war, dann bleibt die Signierung auch NACH dem Ablauf oder dem Widerruf von "TheCodeSigningCertificate.pfx" weiterhin gültig.
Du versuchst ein Zertifikat zu signieren. Das geht nicht, das Zertifikat wurde bereits von der Stammzertifizierungsstelle signiert. (Oder im Falle eines Selfsigned einfach ohne zusätzliche Signierung erstellt.
Nachträglich lässt sich hier nichts mehr ändern.
Der TimeStamp Server wird zusammen mit dem CodeSigning Zertifikat bei der Signierung einer Datei verwendet. Diese Datei kann ein PowerShell Skript sein, ein Word Dokument, oder sonst irgend eine andere Datei. Aber niemals ein anderes Zertifikat.
Zertifikate werden von Zertifizierungsstellen ausgestellt und dabei signiert. Ein TimeStamp Server ist dabei nicht relevant.
$cert = Get-PfxCertificate -FilePath "C:\Test\TheCodeSigningCertificate.pfx"
Set-AuthenticodeSignature -FilePath "C:\Test\FileToBeSigned.abc" -Certificate $cert -IncludeChain All -TimestampServer "http://timestamp.globalsign.com/scripts/timstamp.dll"
Mit obigem Code wird beglaubigt, dass die Datei "C:\Test\FileToBeSigned.abc" die Signierung mit dem Zertifikat "TheCodeSigningCertificate.pfx" tatsächlich zum Zeitpunkt (z.B. 24.02.2020) stattfand.
Solange "TheCodeSigningCertificate.pfx" gemäß dem Beispiel am 24.02.2020 noch gültig (nicht abgelaufen, nicht widerrufen) war, dann bleibt die Signierung auch NACH dem Ablauf oder dem Widerruf von "TheCodeSigningCertificate.pfx" weiterhin gültig.