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 9 von 10   « Erste     789 10      
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
 
Achim Kalwa

 
Delphi 11 Alexandria
 
#81
  Alt 27. Feb 2008, 21:54
Hallo Hans,

brauchst Du das, um Deine Programme für Vista fit zu machen?

Zitat von Gruber_Hans_12345:
Ob Schwachsinn oder nicht, wenn man kommerziell Geld mit Programmen verdient, dann kann man schon mal etwas Geld ausgeben, damit der Benutzer zumindest sicherstellen kann, das dieses Programm von meiner Firma kommt, und da die benutzer mir trauen, wissen die dann zumindest, aha, das kann ich ohne probleme ausführen.
Genau dafür ist die Signierung des Codes gedacht. Der Anwender soll bei der Installation des Programmes unter Vista (und künftigen Windows-Versionen) nicht gleich einen Schreck eingejagt bekommen: "Ein unbekanntes Programm versucht auf den Computer zuzugreifen".

Zitat von Gruber_Hans_12345:
Nur bin ich mir noch nicht sicher, ob man diese billigen von http://www.ksoftware.net/code_signing.html auch verwenden kann, oder ob man dann später mal drauf kommt, wäre doch eines von verisign besser gewesen
Ich habe die Beispieldatei http://www.ksoftware.net/digital_signature_example.exe heruntergeladen; unter Vista Business SP1(RC1) Rechtsklick->Eigenschaften->Digitale Signaturen; es wird angezeigt:

Code:
Name des Signaturgebers: K Software
E-Mail-Adresse:         [email]sales@ksoftware.net[/email]
Zeitstempel:            Montag, 2. November 2007 01:01:02
Unter "Details"->"Zertifikat anzeigen" erfährt man:
Code:
Dieses Zertifikat ist für die folgenden Zwecke beabsichtigt:
- Garantiert, dass die Software von einem Software-Herausgeber stammt
- Schützt die Software vor Änderungen nach der Veröffentlichung.

Ausgestellt für: K Software
Ausgestellt von: UTN-USERFirst-Object
Gültig ab 26.10.2007 bis 26.10.2008
Alles in Allem sieht das genau so wie die Daten bei einem Zertifikat von Verisign (hab ich auf der Arbeit). Ob das unter künftigen Windows-Versionen noch genau so ist, kann Dir vermutlich nur Microsoft sagen.

Ich hab' dann mal mit einem Hex-Editor ein Byte im Header modifiziert.
Das Programm kann noch immer gestartet werden, jedoch ergibt die Überprüfung des Zertifikates:
"Die digitale Signatur ist ungültig."
Hier hätte ich mir gewünscht, dass Vista bereits beim Start den Anwendung auf diesen Umstand hinweist. Aber das ist wohl nicht der Firma K Software anzulasten, sondern eher Microsoft.

HTH
Achim
Achim
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

 
Delphi 7 Personal
 
#82
  Alt 7. Mär 2008, 15:35
hi

ich habe bein Problem beim öffnen der makecert.exe, wenn ich es öffne schließt es sich sofort wieder, und ich finde nur das SDK 1.1, im Verzeichnis Microsoft.Net finde ich nur das 1.1er obwohl(siehe Anhang) ich 2.0 und 3.0 auch installiert habe, was stimmt da nicht??
Miniaturansicht angehängter Grafiken
.net_sdk_538.jpg  
Sebastian
  Mit Zitat antworten Zitat
Achim Kalwa

 
Delphi 11 Alexandria
 
#83
  Alt 7. Mär 2008, 16:01
Hallo,

Zitat von STS301:
ich habe bein Problem beim öffnen der makecert.exe, wenn ich es öffne schließt es sich sofort wieder, und ich finde nur das SDK 1.1, im Verzeichnis Microsoft.Net finde ich nur das 1.1er obwohl(siehe Anhang) ich 2.0 und 3.0 auch installiert habe, was stimmt da nicht??
Im Screenshot links ist vermutlich ein Ausschnitt der installieren Software-Pakete zu sehen (Systemsteuerung). Dort ist ja das .NET SDK 2.0 gelistet. Ist es denn auch installiert?
Schon mal "reparieren" versucht? Bzw. de-installieren und neu installieren?

KalwaDOS
Achim
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

 
Delphi 7 Personal
 
#84
  Alt 7. Mär 2008, 16:22
mit reparieren hab ich es jetzt versucht, hat sich aber nichts geändert, ich lade es mir jetzt noch einma herunter und versuche es dann noch einmal.

kann mir wer das Problem mit dem makecert.exe erklähren (siehe voriger Beitrag)
Sebastian
  Mit Zitat antworten Zitat
Achim Kalwa

 
Delphi 11 Alexandria
 
#85
  Alt 7. Mär 2008, 17:22
Zitat von STS301:
kann mir wer das Problem mit dem makecert.exe erklähren (siehe voriger Beitrag)
MakeCert ist ein Kommandozeilenprogramm. Da geht nix auf. Du hast vermutlich einfach im Explorer einen Doppelklick darauf gemacht. Öffne eine Eingabeaufforderung und folge den Beispielen am Anfang dieses Threads.

HTH
KalwaDOS
Achim
  Mit Zitat antworten Zitat
Gruber_Hans_12345

 
Delphi 2007 Professional
 
#86
  Alt 10. Mär 2008, 09:31
Zitat von kalwados:
Hallo Hans,
brauchst Du das, um Deine Programme für Vista fit zu machen?
Genau dafür ist die Signierung des Codes gedacht. Der Anwender soll bei der Installation des Programmes unter Vista (und künftigen Windows-Versionen) nicht gleich einen Schreck eingejagt bekommen: "Ein unbekanntes Programm versucht auf den Computer zuzugreifen".
Ja sozusagen, es sieht beim Windows Server, und nun auch beim Vista Client, einfach doof aus, wenn man ein kommerzielles Progrmam verkauft, das zig tausend euro kostet, und dann kommt dieses "unbekannter herausgeber" -> möchte es einfach in dieser hinsicht etwas professioneller haben.

Nur bin ich mir noch nicht ganz sicher, ob sich die mehr investition von VeriSign lohnt oder eher nicht.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

 
Delphi 2007 Professional
 
#87
  Alt 14. Mär 2008, 10:59
Soooooooo, habe mir jetzt mal so ein Teil von Comodo bzw K-Software geholt.

Hat zwar etwas gedauert, bis ich das Zertifikat aus dem Firedox raus, dann in den IE rein, und dann mit openSSL ein .spc und .pvk DAtei erzeugt habe.
Aber nun kann ich mit signCode, meine exe Anwendungen signieren ...

eine Frage habe ich noch, weiß jemand einen Weg, wie ich mir das sparen kann, das ich jedes mal das Passwort eingeben muß beim signieren?

Ich möchte gerne das ganze automatisieren, und da stört diese Eingabe etwas ...

(Weiss auch jemand, ob es das signTool irgnedwo zum runterladen gibt, ohne gleich alles von MSDN zu laden?)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#88
  Alt 20. Mär 2008, 09:37
Zitat von Gruber_Hans_12345:
[...]eine Frage habe ich noch, weiß jemand einen Weg, wie ich mir das sparen kann, das ich jedes mal das Passwort eingeben muß beim signieren?

Ich möchte gerne das ganze automatisieren, und da stört diese Eingabe etwas ...[...]
Ich würde mich freuen, dass ein Passwort angegeben werden muss.
So nützt ein Schädling die Datei nichts, und kann nichts in deinem Namen signieren.

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

 
Delphi 2007 Professional
 
#89
  Alt 21. Mär 2008, 08:33
Zitat von xZise:
Zitat von Gruber_Hans_12345:
[...]eine Frage habe ich noch, weiß jemand einen Weg, wie ich mir das sparen kann, das ich jedes mal das Passwort eingeben muß beim signieren?

Ich möchte gerne das ganze automatisieren, und da stört diese Eingabe etwas ...[...]
Ich würde mich freuen, dass ein Passwort angegeben werden muss.
So nützt ein Schädling die Datei nichts, und kann nichts in deinem Namen signieren.

MfG
xZise
Es kann ja ein Passwort angegeben werden, nur sollte dieses halt auch als Parameter angegeben werden können.

Bei mir, werden bei Bedarf exe Datein erzeugt, sind 7Zip komprimierte Dateien, diese werden vollautomatisch erzeugt, auf einen Webserver geladen, und anschließend kann es sich der kunde dann runterladen, und diese würde ich auch gerne signieren, wenn schon denn schon ..., nur dazu muß der signierungsprozess vollautomatisch ablaufen können.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

 
Delphi 2007 Professional
 
#90
  Alt 25. Mär 2008, 14:35
Also, ich verwende im Moment das hier http://www.stephan-brenner.com/?page_id=9 ... ist zwar keine schöne Lösung, aber es funktioniert fürs erste
muß dann später mal schauen, was passiert, wenn ich das ganze aus einem Dienst heraus starte ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 10   « Erste     789 10      


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:20 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