SelfSignedCertificate: Dateien signieren
Hallo,
ich möchte aus Rechtlichen- und Datenschutzgründen div. Dokumente signieren (Firmenverträge und behördliche Berichte..Bilder ..ect..)
Leider schaffe ich es nicht, eine Datei zu signieren:
ich habe folgende Schritte durchgeführt:
1.) PowerShell:
2.) in certmgr.msc -> Eigene Zertifikate -> Zertifikate -> "Firmenname" -> Alle Aufgaben -> exportieren -> ohne privaten Schlüssel -> DER-codiert-binär X.509(.CER) - Dateiname "C:\zertifikat-test\firmenname.cer"
3.) in certmgr.msc -> Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate -> rechtklick -> Alle Aufgaben ->"Importieren" das "firmenname.cer" importiert
4.) PowerShell Versuch:
... und verschiedene Variationen versucht (Groß und Kleinschreibung habe ich immer beachtet). Leider ohne Erfolg.
Fehler sind teilweise: "das angegebene zertifikat ist für die codesignatur nicht geeignet", "zugriff verweigert" und so weiter..
Wie schaffe ich es als Beispiel das TXT File "C:\zertifikat-test\test2.txt" mit dem "C:\zertifikat-test\firmenname.cer" zu signieren?
Vielen Dank für Hinweise und Hilfe
Erich
for life:=1971 to lebensende do
begin
..
ich möchte aus Rechtlichen- und Datenschutzgründen div. Dokumente signieren (Firmenverträge und behördliche Berichte..Bilder ..ect..)
Leider schaffe ich es nicht, eine Datei zu signieren:
ich habe folgende Schritte durchgeführt:
1.) PowerShell:
1
New-SelfSignedCertificate -DnsName "Firmenname" -CertStoreLocation Cert:\CurrentUser\My -Type Custom -NotAfter (Get-Date).AddYears(20)
2.) in certmgr.msc -> Eigene Zertifikate -> Zertifikate -> "Firmenname" -> Alle Aufgaben -> exportieren -> ohne privaten Schlüssel -> DER-codiert-binär X.509(.CER) - Dateiname "C:\zertifikat-test\firmenname.cer"
3.) in certmgr.msc -> Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate -> rechtklick -> Alle Aufgaben ->"Importieren" das "firmenname.cer" importiert
4.) PowerShell Versuch:
1
2
2
$cert = Get-PfxCertificate -FilePath "C:\zertifikat-test\firmenname.cer"
Set-AuthenticodeSignature -FilePath "C:\zertifikat-test\test2.txt" -Certificate $cert
... und verschiedene Variationen versucht (Groß und Kleinschreibung habe ich immer beachtet). Leider ohne Erfolg.
Fehler sind teilweise: "das angegebene zertifikat ist für die codesignatur nicht geeignet", "zugriff verweigert" und so weiter..
Wie schaffe ich es als Beispiel das TXT File "C:\zertifikat-test\test2.txt" mit dem "C:\zertifikat-test\firmenname.cer" zu signieren?
Vielen Dank für Hinweise und Hilfe
Erich
for life:=1971 to lebensende do
begin
..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 535282
Url: https://administrator.de/forum/selfsignedcertificate-dateien-signieren-535282.html
Ausgedruckt am: 11.04.2025 um 09:04 Uhr
18 Kommentare
Neuester Kommentar
bei 01:
und bei 02:
hier muss es natürlich zu einem cert MIT privatekey gehen, sonst macht das signieren mit einem pubkey (wie in deinem fall die Datei auf C:\zertifikat-test\firmenname.cer ) kaum sinn 
Ach ja, wäre mir neu das es einen standard gäbe um .txt Dateien zu signieren
1
-Type CodeSigningCert
und bei 02:
1
-Certificate
Ach ja, wäre mir neu das es einen standard gäbe um .txt Dateien zu signieren
Moin,
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
The Set-AuthenticodeSignature cmdlet adds an Authenticode signature to any file that supports Subject Interface Package (SIP).
Ich schätze eine TXT kann dieses SIP nicht. Versuchs mal mit einer Powershelldatei.
Grüße
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
The Set-AuthenticodeSignature cmdlet adds an Authenticode signature to any file that supports Subject Interface Package (SIP).
Ich schätze eine TXT kann dieses SIP nicht. Versuchs mal mit einer Powershelldatei.
Grüße
Wenn das Dokument nicht geändert werden soll, kann in einem einem ersten Schritt über die Art der Speicherung nachgedacht werden, beispielsweise WORM. Soll das ganze mit Datenbanksuche und diversen Extras funktionieren sind wir bereits bei Dokumenten Management Systemen.
Digitale Signaturen unterbinden das Verändern nicht, du siehst hinterher nur, dass es nicht mehr die Originaldatei ist.
Digitale Signaturen unterbinden das Verändern nicht, du siehst hinterher nur, dass es nicht mehr die Originaldatei ist.
Zitat von @ErichWanker:
"Digitale Signaturen unterbinden das Verändern nicht, du siehst hinterher nur, dass es nicht mehr die Originaldatei ist."
Eine Digitale Signatur würde mir ja schon helfen - da ich ja damit "beweisen" kann - das es sich um eine unverfälschte Datei handelt ..
"Digitale Signaturen unterbinden das Verändern nicht, du siehst hinterher nur, dass es nicht mehr die Originaldatei ist."
Eine Digitale Signatur würde mir ja schon helfen - da ich ja damit "beweisen" kann - das es sich um eine unverfälschte Datei handelt ..
Dazu reicht es wenn du den Hash der Datei speicherst. Wird diese verändert, passt der nicht mehr.
Deswegen gibts auf jeder Linux Downloadseite neben der ISO-Datei den Hashwert, aber eben keine signierte ISO
Das hat mit dem Dateiformat zu tun.
Du kannst nur Dateitypen signieren die das von sich aus unterstützen.
Z.B. PS oder EXE.
Bei einem Textdokument weiß Windows schlicht nicht wohin mit der Signatur.
Du kannst auch einen Hash des Inhaltes erzeugen und als dateiname.hash speichern.
Stefan
Du kannst nur Dateitypen signieren die das von sich aus unterstützen.
Z.B. PS oder EXE.
Bei einem Textdokument weiß Windows schlicht nicht wohin mit der Signatur.
Du kannst auch einen Hash des Inhaltes erzeugen und als dateiname.hash speichern.
Stefan
Naja es bleibt ja dir überlassen weiter zu versuchen eine Lösung einzusetzen die für diesen Zweck nicht gedacht ist um Leute zufrieden zustellen die offensichtlich nicht wissen was sie tun (grade die Uni Leute sollten doch den Unterschied zwischen Signatur und Hash kennen). Oder du hörst auf deine Zeit zu verschwenden und hörst auf die Leute die dir gesagt haben, dass es nicht geht.
PS: Wenn wir schon bei Audit Status sind, dann wäre es erst recht Aufgabe einer Software die entsprechend zertifiziert ist statt einer Selbstbaulösung...
PS: Wenn wir schon bei Audit Status sind, dann wäre es erst recht Aufgabe einer Software die entsprechend zertifiziert ist statt einer Selbstbaulösung...

Zitat von @ErichWanker:
"Dazu reicht es wenn du den Hash der Datei speicherst."
Jein
... Die grad aus der Uni kommenden Personen, die dann das Audit durchführen sind das Problem: Wenn die "digitale Signatur" hören sind sie schon zufrieden - Prüfsummen und Co. sind keine Wörter die befriedigend wirken 
PS. ... irgendwie MUSS es doch möglich sein
Ist es ja auch, nur gibt es das bei PlainText-Dateien so wie die Kollegen schon korrekt angemerkt haben keinen vorgesehenen Platz für eine eingebettete Signatur, ohne die Dateistruktur zu zerstören, deswegen bettet man die Signatur entweder wie bei PS1 Dateien als Klartext mit in die Datei ein, oder legt eine signierte Hash-Datei der Original Datei bei."Dazu reicht es wenn du den Hash der Datei speicherst."
Jein
PS. ... irgendwie MUSS es doch möglich sein
Dabei wird der Hash der Datei erstellt und dieser zusätzlich signiert so das dieser nicht ohne aufzufallen manipulierbar ist
https://raymii.org/s/tutorials/Sign_and_verify_text_files_to_public_keys ...
Damit ist ebenfalls wie bei eingebetteten Signaturen die Unversehrtheit der Datei eindeutig überprüfbar.
Hoffe jetzt ist dir das endlich klar, wenn schon drei Leute dir das gleiche verklickern wollen .

Welche Dateiendung sollte ich dann da nehmen ?
Ich nehme immer den Original-Dateinamen + mit der Endung *.signature angehängt. Ein Textfile (wo ich dann den Hash reinschreibe) kann ich ja nicht signieren?
Du hast das Prinzip offensichtlich noch nicht verstanden. Am einfachsten die Signatur direkt als Binary-File speichern. Oder eben die Plaintextsignatur in ein File. Das File selbst must du nicht signieren!!Kann man auch alles mit der PS und dem Namespace System.Security.Cryptography.RSACryptoServiceProvider abfackeln, das bietet entsprechende Methoden zum erstellen und gleichzeitigen Signieren eines Hashes mit Zertifikaten.
https://docs.microsoft.com/de-de/dotnet/api/system.security.cryptography ...
Hallo,
das mit dem Hash war nur ein Denkanstoss.
Eine Signatur ist ja ein Hash der Datei welche mit einem privaten Schlüssel signiert wird und dem öffentlichen Schlüssel zum überprüfen.
Nur den Hash kann ich nach der Manipulation der Datei ja auch neu erstellen.
Aber grundsätzlich funktionieren alle (rechtssicheren) Archive nach dem Prinzip.
Hash erstellen und so speichern dass dieser nicht manipulierbar ist. z.B. in der Blocklist.
Wenn Du die Hashes irgendwo noch getrennt speicherst kannst Du eine Datei ja jederzeit dagegen überprüfen.
Eine Signatur einer Datei ist genau das.
das mit dem Hash war nur ein Denkanstoss.
Eine Signatur ist ja ein Hash der Datei welche mit einem privaten Schlüssel signiert wird und dem öffentlichen Schlüssel zum überprüfen.
Nur den Hash kann ich nach der Manipulation der Datei ja auch neu erstellen.
Aber grundsätzlich funktionieren alle (rechtssicheren) Archive nach dem Prinzip.
Hash erstellen und so speichern dass dieser nicht manipulierbar ist. z.B. in der Blocklist.
Wenn Du die Hashes irgendwo noch getrennt speicherst kannst Du eine Datei ja jederzeit dagegen überprüfen.
Eine Signatur einer Datei ist genau das.