Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Signieren der EXE nach Erzeugung (https://www.delphipraxis.net/187802-signieren-der-exe-nach-erzeugung.html)

Darlo 5. Jan 2016 08:53

Signieren der EXE nach Erzeugung
 
Guten Morgen!

Nachdem ich den unschönen Umstand und die folgen von nicht signierten Anwendungen jahrelang erfolgreich ignoriert habe, liefer ich seit gestern meine Programme mit
einer digitalen Signatur aus. Dank der delphipraxis über ksoftware bestellt.

Gibt es eigentlich keine Möglichkeit bei Delphi Seattle die Signierung im Anschluss der Erzeugung der EXE automatisch durchzuführen?

Gruß
Philip

Uwe Raabe 5. Jan 2016 08:56

AW: Signieren der EXE nach Erzeugung
 
Du könntest den Sign-Befehl als Post-Build-Ereignis ausführen - sinnvollerweise vielleicht nur in der Release-Konfiguration

Darlo 5. Jan 2016 09:09

AW: Signieren der EXE nach Erzeugung
 
Perfekt, funktioniert! Danke.

generic 5. Jan 2016 09:44

AW: Signieren der EXE nach Erzeugung
 
Ich empfehle immer eine Timestamp-Signatur vorzunehmen!
Machst du aber vermutlich schon.

Ich erwähne es nur deshalb, weil ein Kunde von mir es Jahre lang vergessen hat und nun sein Zertifikat abgelaufen ist. Was ihm jetzt viele Probleme bereitet.

Darlo 5. Jan 2016 10:53

AW: Signieren der EXE nach Erzeugung
 
Ja, Timestamp ist mit drin. Anbei der Befehl
Code:
"c:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /f "[PFAD ZUM CERT]/cert.pfx" /p [PASSWORT] /d "[PRODUKTNAME]" /du "[URL]" /n "[FIRMENNAME]" /t http://timestamp.verisign.com/scripts/timstamp.dll [PFAD DER EXE]

mm1256 5. Jan 2016 11:45

AW: Signieren der EXE nach Erzeugung
 
Hallo,

bei K-Software gibt's doch das Signier-Tool "kSign.exe" und die Kommandozeilen-Variante "kSignCMD.exe". Ich verwende beide. Beim Kommandozeilentool erscheint bei der Auflistung der möglichen Parameter der Hinweis: "All signatures are automatically timestamped by Comodo timestamp server".

Hab ich jetzt was Veraltetes, oder Darlo, oder reden wir von verschiedenen Dingen?

Bernhard Geyer 5. Jan 2016 11:50

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Darlo (Beitrag 1326042)
Ja, Timestamp ist mit drin. Anbei der Befehl
Code:
"c:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /f "[PFAD ZUM CERT]/cert.pfx" /p [PASSWORT] /d "[PRODUKTNAME]" /du "[URL]" /n "[FIRMENNAME]" /t http://timestamp.verisign.com/scripts/timstamp.dll [PFAD DER EXE]

Und Versisign lässt das Signieren zu obwohl du das Zertifikat woanders gekauft hast?

mjustin 5. Jan 2016 11:56

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1326052)
Und Versisign lässt das Signieren zu obwohl du das Zertifikat woanders gekauft hast?

Viele Timestamp Dienste können sich gegenseitig "vertreten". Siehe Alternative timestamping services for authenticode

Bernhard Geyer 5. Jan 2016 12:14

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von mjustin (Beitrag 1326053)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1326052)
Und Versisign lässt das Signieren zu obwohl du das Zertifikat woanders gekauft hast?

Viele Timestamp Dienste können sich gegenseitig "vertreten". Siehe Alternative timestamping services for authenticode

Das ist mir neu. Das mit dem instabilen Verisign-Server kenne ich auch. Glücklicherweise gabs bisher keinen totalausfall des Servers wenn wir ihn benötigt haben sondern nur kurzzeitige Probleme

Darlo 5. Jan 2016 12:28

AW: Signieren der EXE nach Erzeugung
 
Ja das geht auch wenn das Zertifikat von woanders herkommt. Habe den glaube ich aus der MS-Hilfe zum signtool kopiert.

hoika 5. Jan 2016 13:55

AW: Signieren der EXE nach Erzeugung
 
Hallo,
was muss man den bei KSoftware für so ein Zertifikat bezahlen und wie lange ist es gültig?


Danke

gefunden ...
http://codesigning.ksoftware.net/


Heiko

Sir Rufo 5. Jan 2016 23:52

AW: Signieren der EXE nach Erzeugung
 
@Darlo

Wenn du mit einer PFX Datei arbeitest, dann kannst du dir die Option /n komplett sparen, die wird nur dann verwendet, wenn du ein Zertifikat aus dem Zertifikatsspeicher verwenden möchtest.

Du solltest deinen Dateien allerdings zwei mal signieren (SHA1 + SHA256)
(s. https://knowledge.symantec.com/fr/su...edirected=true)

Hier mal eine "sicherere" Variante für ein PostBuild-Ereignis:
Code:
"$(SignTool)" sign /v /fd SHA1 /f "$(CERTFILE_SirRufo)" /p $(CERTPASS_SirRufo) /d "$(PROJECTNAME)" /t http://timestamp.verisign.com/scripts/timstamp.dll "$(OUTPUTPATH)"
"$(SignTool)" sign /v /as /fd SHA256 /f "$(CERTFILE_SirRufo)" /p $(CERTPASS_SirRufo) /d "$(PROJECTNAME)" /tr http://timestamp.geotrust.com/tsa "$(OUTPUTPATH)"
Die Werte für $(SignTool), $(CERTFILE_SirRufo), $(CERTPASS_SirRufo) sind in den allgemeinen Optionen hinterlegt. Jetzt wird das Kennwort auch nicht mehr mit dem Projekt verheiratet.

Um das Kennwort komplett da herauszunehmen, kann man das Zertifikat auch in den Zertifikatsspeicher installieren und schon brauche ich kein Kennwort mehr.
Code:
"$(SignTool)" sign /v /fd SHA1 /a /n "Sir Rufo" /s MY /d "$(PROJECTNAME)" /t http://timestamp.verisign.com/scripts/timstamp.dll "$(OUTPUTPATH)"
"$(SignTool)" sign /v /as /fd SHA256 /a /n "Sir Rufo" /s MY /d "$(PROJECTNAME)" /tr http://timestamp.geotrust.com/tsa "$(OUTPUTPATH)"

Darlo 6. Jan 2016 11:50

AW: Signieren der EXE nach Erzeugung
 
Danke, werde ich morgen gleich korrigieren. Muß mich in das Thema nochmal einlesen. Halbwissen ist halt das gefährlichste Wiisen 😉

Bernhard Geyer 8. Jan 2016 14:47

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Sir Rufo (Beitrag 1326108)
Hier mal eine "sicherere" Variante für ein PostBuild-Ereignis:
Code:
"$(SignTool)" sign /v /fd SHA1 /f "$(CERTFILE_SirRufo)" /p $(CERTPASS_SirRufo) /d "$(PROJECTNAME)" /t http://timestamp.verisign.com/scripts/timstamp.dll "$(OUTPUTPATH)"
"$(SignTool)" sign /v /as /fd SHA256 /f "$(CERTFILE_SirRufo)" /p $(CERTPASS_SirRufo) /d "$(PROJECTNAME)" /tr http://timestamp.geotrust.com/tsa "$(OUTPUTPATH)"

hab jezt das Problem das der Parameter /as (Add Store) bei mir den Fehlercode 0x80070057 bringt.
Ohne /as (Aber auch nur SHA256) klappt es. Aber nicht das zusammen signieren.

Sir Rufo 8. Jan 2016 15:01

AW: Signieren der EXE nach Erzeugung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Funktioniert eigentlich ohne Schmerzen (s. Anhang)

Bernhard Geyer 8. Jan 2016 15:13

AW: Signieren der EXE nach Erzeugung
 
Lass ich den TimeStamp (/t <URL>) beim zweiten Aufruf weg so klappt es :gruebel:

Bernhard Geyer 8. Jan 2016 15:22

AW: Signieren der EXE nach Erzeugung
 
Es was das r das gefehlt hat im Block:
:wall::wall::wall:

Sir Rufo 8. Jan 2016 15:26

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1326423)
Es was das r das gefehlt hat im Block:
:wall::wall::wall:

Ärger dich nicht - freu dich lieber, dass es einfach zu lösen war ;)

Bernhard Geyer 8. Jan 2016 16:51

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Sir Rufo (Beitrag 1326424)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1326423)
Es was das r das gefehlt hat im Block:
:wall::wall::wall:

Ärger dich nicht - freu dich lieber, dass es einfach zu lösen war ;)

Jetzt freu ich mich.
Wenigstens ein Grund heute Abend auf diesen Erfolg einen Anzustoßen :cheers:
Schönes Wochenende und Danke für die Hinweise wegen SHA256

sh17 8. Jan 2016 19:07

AW: Signieren der EXE nach Erzeugung
 
Warum wird beim SHA256 ein anderer TimeServer genommen?

Sir Rufo 8. Jan 2016 19:35

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von sh17 (Beitrag 1326446)
Warum wird beim SHA256 ein anderer TimeServer genommen?

Weil hier ein RFC 3161 Timestampserver zwingend benötigt wird (s. Link weiter oben)

mm1256 9. Jan 2016 10:16

AW: Signieren der EXE nach Erzeugung
 
Hallo,

Zitat:

This is efficient for situations that you may want to sign a software or application file with two different signatures.
Wenn ich Sinn und Zweck des Artikels richtig verstanden habe, dann geht es darum für Win7 und Win8 unterschiedliche Zertifikate einzufügen.

Jetzt wo der Thread praktisch abgeschlossen ist, darf ich ja vielleicht noch eine etwa OT-Frage dazu stellen. Mir sind Sinn, Zweck und Nutzen dieser dualen Vorgehensweise noch nicht recht klar. Welchen Vorteil habe ich davon, im Vergleich zur Verwendung des Sign-Tools von K-Software? Denn, wer braucht unterschiedliche Zertifikate in einer einzigen Datei?

Sir Rufo 9. Jan 2016 10:49

AW: Signieren der EXE nach Erzeugung
 
Für Windows 8+ braucht man SHA256 aber für Windows 7 funktioniert das nur, wenn das System ein entsprechendes Update hat.

Ohne das Update kann die Signatur nicht geprüft werden, das geht nur mit dem SHA1.

Also packt man beide Varianten rein (erst SHA1 und dann SHA256) und haut ein Ei drüber. Wer will schon mit den Kunden die hausinterne Update-Politik diskutieren? :stupid:

Bernhard Geyer 9. Jan 2016 11:21

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von mm1256 (Beitrag 1326485)
Jetzt wo der Thread praktisch abgeschlossen ist, darf ich ja vielleicht noch eine etwa OT-Frage dazu stellen. Mir sind Sinn, Zweck und Nutzen dieser dualen Vorgehensweise noch nicht recht klar. Welchen Vorteil habe ich davon, im Vergleich zur Verwendung des Sign-Tools von K-Software? Denn, wer braucht unterschiedliche Zertifikate in einer einzigen Datei?

Windows XP (Win7?) kennt keine SHA256. Dort ist eine nur mit SHA256 signierte Datei nicht signiert.
Für aktuelle Windowsversionen ist (laut Verisign) ab 2017 gilt eine nur mit SHA1 signierte Datei auch nicht mehr als signiert da SHA1 als geknackt angesehen wird.

Also brauchst du (solange du noch alte Windowsversionen unterstütz) beide Signaturen in der Exe damit unter allen Windowsversionen deine Exe als signiert angesehen wird.

mm1256 9. Jan 2016 14:01

AW: Signieren der EXE nach Erzeugung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1326489)
...ab 2017 gilt eine nur mit SHA1 signierte Datei auch nicht mehr als signiert da SHA1 als geknackt angesehen wird.

Vielen Dank, jetzt ist mir das klar. Das ist dann auch ein gutes (technisches) Argument, beide Signaturen aufzunehmen.

axellang 22. Mai 2017 17:37

AW: Signieren der EXE nach Erzeugung
 
Hallo Leute,

weil ich es gerade sehe, die Adresse hat sich geändert von:
Code:
http://timestamp.geotrust.com/tsa
nach
Code:
http://sha256timestamp.ws.symantec.com/sha256/timestamp
mehr dazu unter:
Code:
https://knowledge.geotrust.com/support/knowledge-base/index?page=content&actp=CROSSLINK&id=INFO185
https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=INFO4231
Axel

Darlo 8. Jun 2017 08:45

AW: Signieren der EXE nach Erzeugung
 
Danke für den Hinweis, jetzt läuft die 256er Signierung wieder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz