AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Eigene Anwendungen digital signieren - eine Mini-Einführung
Tutorial durchsuchen
Ansicht
Themen-Optionen

Eigene Anwendungen digital signieren - eine Mini-Einführung

Ein Tutorial von Daniel · begonnen am 22. Apr 2007 · letzter Beitrag vom 5. Feb 2015
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte »    
Daniel
Registriert seit: 30. Mai 2002
Selbst Code signieren

Das ist die absolute Kurzfassung für diejenigen, die mal eben mit digitalen Signaturen herumspielen möchten. In diesem Beispiel wird ein eigenes digitales Zertifikat erzeugt und dann lokal auf dem Rechner installiert.

Warum selbst signieren?
Wird eine nicht signierte Anwendung unter Vista als Administrator ausgeführt, so erscheint das Fenster der Benutzerkonten-Steuerung in recht hässlicher Art und Weise:


Eine digital signierte Anwendung lässt dieses Fenster schon etwas angenehmer ausschauen:


Im professionellen Einsatz wird man um den Erwerb eines Zertifikates nicht umhin kommen, doch für erste Gehversuche auf dem lokalen Rechner kann diese „Spar-Variante“ ausreichen. Kleiner Bonus am Rande: Man kann hiermit auch Treiber signieren und damit zum Beispiel die Vista-Varianten zufriedenstellen, die auf digital signierte Treiber bestehen. Eine weitere Einsatzmöglichkeit für dieses Zertifikat wäre das digitale Signieren einer Anwendung, die nur haus-intern eingesetzt wird, wo der Erwerb eines Zertifikates also nicht zwingend notwendig wäre.

Mit den folgenden zwei Befehlen wird ein Minimal-Zertifikat erstellt und auf dem lokalen Rechner installiert. In meinem Beispiel wird das Zertifikat in der Datei „d:\my_certificate.cer“ gesichert, diesen Pfad müsst Ihr ggf. an Euer System anpassen. Für die Installation des Zertifikates in Schritt #2 werden administrative Rechte benötigt. Die beiden verwendeten Werkzeuge „makecert“ und „signtool“ sind Bestandteile des .NET SDK von Microsoft und finden sich im .\BIN-Verzeichnis der .NET-SDK-Installation.

1) Zertifikat erzeugen:
Code:
makecert.exe -$ individual -r -pe -ss "DP Certificate Store" -n CN="DP Signierung" "d:\my_certificate.cer"
2) Das frisch erzeugte Zertifikat In den Speicher vertrauenswürdiger Stammzertifizierungsstellen installieren:
Code:
certmgr.exe /add "d:\my_certificate.cer " /s /r localMachine root
Nun können wir dieses Zertifikat auf unserem lokalen Rechner nutzen. Soll das Zertifikat auch auf anderen Rechnern genutzt werden, so muss die Zertifikatsdatei auf den anderen Rechner kopiert werden und danach der Schritt #2 auf diesem Rechner ausgeführt werden (ebenfalls mit Admin-Rechten).

3) Eine Datei mit dem neuen Zertifikat digital signieren:
Code:
signtool.exe sign /v /s "DP Certificate Store" /n " DP Signierung " {DATEINAME}
4) Die Signatur der Datei verifizieren:
Code:
signtool.exe verify /pa /v {DATEINAME}
Das als Mini-Einführung. Als weitere Referenz seien die Dokumentationen der beiden genutzten Werkzeuge erwähnt.
mit Grüßen aus Hamburg
 
Benutzerbild von Chemiker
Chemiker

 
Delphi 11 Alexandria
 
#61
  Alt 20. Mai 2007, 10:58
Hallo,

ich habe da mal eine Frage am Rande zu diesem Thema. Wenn ich nur original Programme einsetze die ein digitales Zertifikat besitzen, brauche ich dann noch einen Virenscanner? Weil ich, so habe ich das hier in diesem Beitrag verstanden, ja zweifelsfrei feststellen kann wer der Verursacher für evt. Schäden ist.

Bis bald Chemiker
  Mit Zitat antworten Zitat
SirTwist

 
Delphi XE Professional
 
#62
  Alt 20. Mai 2007, 11:21
Natürlich brauchst Du noch einen Virenscanner.

1. Wenn ein Programm digital signiert ist, garantiert dir das noch lange nicht, dass das Programm keinen Müll macht. Das entspricht eher so dem KFZ-Kennzeichen beim Auto (ohne TÜV!). Wenn Du feststellen solltest, dass das Programm fragwürdige Sachen macht (z.B. weil Dein Virenscanner Alarm schlägt), kannst Du Dich an den Unterzeichner wenden und auf die eine oder andere Art Genugtuung verlangen.

2. Du surfst ja auch und empfängst Mails. Da gibt es jede Menge Möglichkeiten, Dir etwas unterzujubeln, auch wenn Du nicht willentlich auf eine .exe klickst.
  Mit Zitat antworten Zitat
Assertor

 
Turbo C++
 
#63
  Alt 20. Mai 2007, 12:29
Zitat von SirTwist:
auf die eine oder andere Art Genugtuung verlangen.
Das klingt ja nach einem Duell, aber ich weiß was Du meinst
Frederik
  Mit Zitat antworten Zitat
Achim Kalwa

 
Delphi 12 Athens
 
#64
  Alt 11. Jun 2007, 13:47
Hallo Daniel,

erst einmal vielen Dank für Dein Tutorial!
Ich habe heute versucht, die Steps zu reproduzieren:

Zitat von Daniel:

1) Zertifikat erzeugen:
Code:
makecert.exe -$ individual -r -pe -ss "DP Certificate Store" -n CN="DP Signierung" "d:\my_certificate.cer"
2) Das frisch erzeugte Zertifikat In den Speicher vertrauenswürdiger Stammzertifizierungsstellen installieren:
Code:
certmgr.exe /add "d:\my_certificate.cer " /s /r localMachine root
3) Eine Datei mit dem neuen Zertifikat digital signieren:
Code:
signtool.exe sign /v /s "DP Certificate Store" /n " DP Signierung " {DATEINAME}
1) schlägt fehl. Wenn ich den Schalter "-pe" weglasse, wird jedoch eine .cer-Datei erstellt.

2) scheint zu funktionieren (keine Fehlermeldung)

3) kann nicht ausgeführt werden, weil signtool.exe nicht vorhanden ist.

Jetzt meine Frage: Welche Version des .NET SDK ist erforderlich?

TIA
KalwaDOS
Achim
  Mit Zitat antworten Zitat
CCRDude
 
#65
  Alt 11. Jun 2007, 21:01
Eigentlich gar kein .NET-SDK, oder? signtool.exe und signcode.exe sind z.B. im Platform SDK enthalten, wenn ich mich nicht irre (brauchen dann nur irgendwelche VC-Runtimes, je nach Platform-SDK-Version, die man aber meist eh schon drauf hat).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

 
Delphi 10.4 Sydney
 
#66
  Alt 11. Jun 2007, 21:19
Zitat von Chemiker:
ich habe da mal eine Frage am Rande zu diesem Thema. Wenn ich nur original Programme einsetze die ein digitales Zertifikat besitzen, brauche ich dann noch einen Virenscanner? Weil ich, so habe ich das hier in diesem Beitrag verstanden, ja zweifelsfrei feststellen kann wer der Verursacher für evt. Schäden ist.
Nur wenn der Virus die veränderte Exe mit seiner Signatur neu Signiert
Ansonsten meckert Windows uberhaupt nicht wenn eine Signatur kaputt ist. Dazu muß man schon in den Eigenschaften nachschauen bzw. im Code dieser Anwendung wird die Gültigkeit der Signatur überprüft.
  Mit Zitat antworten Zitat
CCRDude
 
#67
  Alt 11. Jun 2007, 21:23
Ob Windows bei einer kaputten Signatur nicht meckert, wär ich mir nichtmal sicherer. Wichtiger aber: wär ich ein Virus, würd ich die Signatur einfach entfernen (nichtmal selber signieren), solange man Signaturen nicht irgendwo per Policy als Pflicht festlegt (und selbst dann ist ja nichtmal Vista soweit Certified for Vista, daß alle Betriebssystemdateien schon signiert wären), würd das wahrscheinlich nichtmal auffallen.
  Mit Zitat antworten Zitat
Achim Kalwa

 
Delphi 12 Athens
 
#68
  Alt 11. Jun 2007, 22:39
Zitat von CCRDude:
Eigentlich gar kein .NET-SDK, oder? signtool.exe und signcode.exe sind z.B. im Platform SDK enthalten, wenn ich mich nicht irre (brauchen dann nur irgendwelche VC-Runtimes, je nach Platform-SDK-Version, die man aber meist eh schon drauf hat).
Aus dem Ursprungs-Artikel:
Zitat:
Die beiden verwendeten Werkzeuge „makecert“ und „signtool“ sind Bestandteile des .NET SDK von Microsoft und finden sich im .\BIN-Verzeichnis der .NET-SDK-Installation.
Darum meine Frage nach der Version des .NET-SDK.

KalwaDOS
Achim
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

 
Delphi 11 Alexandria
 
#69
  Alt 12. Jun 2007, 10:51
Zitat von CCRDude:
Wichtiger aber: wär ich ein Virus, würd ich die Signatur einfach entfernen
Das wollte Bernhard doch mal wissen. Wie geht das denn?
Sven Harazim
  Mit Zitat antworten Zitat
CCRDude
 
#70
  Alt 12. Jun 2007, 11:06
@KalwaDOS: Vielleicht sind diese Dateien ja auch in diversen SDKs drin. Hab gerade nochmal nachgeschaut, im bin-Ordner des Platform SDK for Win Server 2003 R2 sind beide Dateien definitiv enthalten.

@sh17: Im PE-Header (evtl. auch schon im MZ, müsste ich nachsehen) steht der Offset zur Signatur. Die Datei ab diesem Offset abschneiden, und den Offset auf 0 setzen. SecureBlackbox ist auch ne nette Sammlung, die nen Authenticode-Teil beinhaltet, der das imho auch kann.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:


Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz