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 3 von 10     123 45     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
 
romber

 
Delphi 10 Seattle Professional
 
#21
  Alt 17. Mai 2007, 12:50
Ich habe auch irgendwo gelesen, dass gegen Microsoft und deren UAC bereits mehrere Sammelklagen der mittleren Softwareentwilkungunternehmen bei europäischen Gerichshof eingegangen sind. Denn diese Zertifizierungen sind angeblich nicht das letzte "geschenk", der Microsoft & Co für die Software-Entwickler vorbereitetet haben.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

 
Delphi 11 Alexandria
 
#22
  Alt 17. Mai 2007, 13:29
Zitat von romber:
Ich habe auch irgendwo gelesen, dass gegen Microsoft und deren UAC bereits mehrere Sammelklagen der mittleren Softwareentwilkungunternehmen bei europäischen Gerichshof eingegangen sind. Denn diese Zertifizierungen sind angeblich nicht das letzte "geschenk", der Microsoft & Co für die Software-Entwickler vorbereitetet haben.
Selbst wenn die klagen, dann ist es Schwachsinn, weil Microsoft lediglich den Nutzer darauf hinweist, dass er vorsichtig sein soll. Haben die früher auch schon gemacht, nur nicht so auffällig, sondern in der alten bekannten XP-Message Box "Wirklich ausführen?". Jetzt halt in der Secure Shell. Anders ist nichts, nur evtl. sicherer.

......
Daniel W.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

 
Delphi 11 Alexandria
 
#23
  Alt 17. Mai 2007, 13:30
Zitat von romber:
Normalerweise erstelle ich mit InstallShield Express die Installationspakete für meine Progtamme. Im InstallShield Express gibt es leider keine Optionen für automatische Installation von Zertifikaten.
Du sollst die Zertifikate nicht installieren - um Gottes Willen! Du sollst Deine Anwendungen signieren und dann vertreiben, somit kann der Nutzer zweifelsfrei die Herkunft ermitteln. Um mehr geht es nicht

......
Daniel W.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

 
Delphi 10.4 Sydney
 
#24
  Alt 17. Mai 2007, 13:42
Zitat von romber:
Nehmen wir an, ich gabe einen digitalen Zertifikat und möchte mein Programm auf einem fremden Rechner installieren. Soll ich jedesmal die Zertifikat-Datei mit übertragen und dann die Installation des Zertifikates selbst ausführen (Schritt 2) oder wie geht das?
Wenn du eine selbst erstelltes Zertifikat hast: Ja. Falls dein Zertifikat von Verisign oder Konsorten kommt so ist dein Zertifikat von denen "gegengezeichnet" und Windows bringt entsprechende Zertifikate mit so das dies nicht nötig ist.

Zitat von romber:
Normalerweise erstelle ich mit InstallShield Express die Installationspakete für meine Progtamme. Im InstallShield Express gibt es leider keine Optionen für automatische Installation von Zertifikaten.
Was du aber machen solltest ist das fertige Installpacket (falls es ein Single-File-Installer ist) ebenfalls zu zertifizieren.

Vorteile von "richtigen" per offizieller Zertifizierungsstelle zertifiziertes Zertifikat:
- Installer von ActiveX-Controlls werden vom IE automatisch zur installation angeboten. Ohne Zertifikat macht der IE gar nichts (bzw. man müßte die Sicherheitseinstellungen gaaaanz weit herunterdrehen
- Eigene .NET-Custom Controls ("neue Art von ActiveX) können von einem Domänenadmin zentral vertraut werden
- Man kann sehr einfach kaputte oder modifizierte Exe's bzw. DLLs feststellen (z.B. ob Kopier oder Lesefehler von CD/DVD bei CD/DVD-Anwendungen aufgetreten sind)
- Man bekommt nicht nur unter Vista "nettere" Warnmeldungen.


@ Daniel: Könntest Du noch bitte einen Hinweis auf den sinnvollerweise anzuwendenden Timestamper-Service Angeben (Siehe auchCode Signing, Seite 10. Damit wird verhindert das die eigene Anwendung mit dem ablaufen des Zertifikats auch ungültig wird.
  Mit Zitat antworten Zitat
CCRDude
 
#25
  Alt 17. Mai 2007, 13:49
Erstmal kurz zum Preis bei VeriSign: wenn ich mich nicht täusche, gibts da in Zusammenarbeit mit Microsoft bzgl. Vista aber auch einen Preis von 199 statt 499 €. Irgendwo auf der WinQual-Seite könnte das gestanden haben...
Außerdem gabs glaub ich auch mal einen israelischen(?) Lowcost-Anbieter, der selbst für den kleinsten Shareware-Macher noch im Rahmen läge.

Dann noch ein Vorteil: sollte ein Virus eine signierte Datei verändern, wird deren Ausführung verweigert, da die Signatur an den Hashwert der Datei geknüpft ist (es sei denn der Virus entfernt die Signatur ganz, das würde aber auch auffallen). Insofern auch bei den "Großen" ein Vorteil, und Sicherheit für den Anwender.

Übrigens: wer sein Programm "Certified for Vista" bekommen möchte, muss jede ausführbare Datei signieren, da geht kein Weg herum (was übrigens zu der Annahme verleitet, Vista selber wäre nicht Certified for Vista, weil Microsoft selber immer noch nur einen Bruchteil seiner Dateien signiert).
  Mit Zitat antworten Zitat
romber

 
Delphi 10 Seattle Professional
 
#26
  Alt 17. Mai 2007, 13:53
Zitat von Bernhard Geyer:
Wenn du eine selbst erstelltes Zertifikat hast: Ja. Falls dein Zertifikat von Verisign oder Konsorten kommt so ist dein Zertifikat von denen "gegengezeichnet" und Windows bringt entsprechende Zertifikate mit so das dies nicht nötig ist.
Heisst das, dass ein Teil des Zertifikates ist bereits in Windows debei und es durch die Signatur in der Datei ergängz wird? Ansonsten verstehe ich das nicht ganz. Wenn ich ein neues Zertifikat erwerbe, wie kann Windows das wissen?
  Mit Zitat antworten Zitat
CCRDude
 
#27
  Alt 17. Mai 2007, 14:00
Zertifikate können sich auch gegenseitig zertifizieren, und diesen Zertifizierungspfad kann man zurückverfolgen.

Kaufst Du ein Zertifikat von VeriSign, gibts da irgendwo ein VeriSign-Root-Zertifikat, das wahrscheinlich ein VeriSign-Authenticode-Zertifikat unterschrieben hat, das wieder dein gekauftes Zertifikat unterschrieben hat.

Windows prüft dann die ganze Kette entlang, ob alle Zertifikate gültig sind und auf ein Root-Zertifikat zurückzuführen sind, dessen öffentlicher Teil bei Windows bereits mitgeliefert wird.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#28
  Alt 17. Mai 2007, 14:27
Da kann man sagen, was man will, im Prinzip ist klar, was diese Maßnahme mal abgesehen von der Sicherheit bringt: Ein paar Firmen verdienen viel Geld und die kleinen Entwickler, Freeware und vor allem OpenSource stehen dumm da, weil sie sich diese Zertifikate nicht leisten können. Dem einfachen Benutzer wird eingeredet, dass unzertifizierte Programme sehr sehr gefährlich sind und auf keinen Fall vertrauenswürdig und, wer weiß, Microsoft könnte in Zukunft sogar ohne Probleme ein Zertifikat zur Pflicht erklären.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

 
Delphi 11 Alexandria
 
#29
  Alt 17. Mai 2007, 14:47
Zitat von 3_of_8:
Dem einfachen Benutzer wird eingeredet, dass unzertifizierte Programme sehr sehr gefährlich sind und auf keinen Fall vertrauenswürdig
Tut MS imo nicht, sie warnen jedoch den Nutzer zweimal hinzuschauen. Es ist kein Klick mehr oder weniger, wenn ein Zertifikat dabei ist oder nicht. Es wird lediglich anders dargestellt.
Zitat von 3_of_8:
Microsoft könnte in Zukunft sogar ohne Probleme ein Zertifikat zur Pflicht erklären.
Könnten Sie, ja. Aber damit kommen sie imo nicht durch. Was aber schon seit Windows 2000/XP geht, ist dass der Administrator eines Rechners/einer Domain vorschreibt, dass die Anwendungen digital signiert sein müssen, um diese zu starten.

......
Daniel W.
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000
 
#30
  Alt 17. Mai 2007, 15:02
Ich habe das ganze bei mir noch nicht getestet. Aber auf der ersten Seite steht doch auch, wie ich per Befehlszeile mir mein selbstgeneriertes Zertifikat auf nem anderen Rechner installiere, oder nicht?
Wenn ich im Installer jetzt dieses Zertifikat mit installieren lasse, gilt meine Anwendung als signiert.
Geht das so? Irgendwo muss noch ein Haken sein, sonst wäre das ganze System ja hinfällig
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 10     123 45     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 21:36 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