AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

eigenes Zertifikat

Ein Thema von haentschman · begonnen am 19. Feb 2019 · letzter Beitrag vom 29. Jul 2020
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

eigenes Zertifikat

  Alt 19. Feb 2019, 13:06
Hallo...

Tutorial: https://www.delphipraxis.net/90725-e...nfuehrung.html

Ich habe schon eigene Zertifikate erstellt und die EXEn signiert. Diesmal will er nicht.

1. Das Zertifikat ist im Store. (Bild Zertifikat)
2. Über eine Batch (PostBuild) wird die EXE signiert.
Zitat:
Target PostBuildEvent:
E:\Projects\Projects_Delphi\YYY\Work\Source\_PostB uild\XXX_Release.bat

Aktive Codepage: 850.

The following certificate was selected:
Issued to: XXX Signierung

Issued by: XXX Signierung

Expires: 01.01.2040 00:59:59

SHA1 hash: E62296F40E24A5E02DEA1FFB0CC8A984245C3613




Attempting to sign: E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe

Successfully signed: E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe

Number of files successfully Signed: 1

Number of warnings: 0

Number of errors: 0



Verifying: E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe

Signing Certificate Chain:
Issued to: XXX Signierung

Issued by: XXX Signierung

Expires: 01.01.2040 00:59:59

SHA1 hash: E62296F40E24A5E02DEA1FFB0CC8A984245C3613


File is not timestamped.
Successfully verified: E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe


Number of files successfully Verified: 1

Number of warnings: 0

Number of errors: 0


1 Datei(en) kopiert.
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:01:01.78
3. Aber die Eigenschaften (Bild Eigenschaften) haben keinen Reiter "Digitale Signaturen" und mich grinst immer noch das gelbe Bild an.

Nachtrag: W10

Danke für Ideen...
Miniaturansicht angehängter Grafiken
zertifikate.png   eigenschaften.png  

Geändert von haentschman (19. Feb 2019 um 13:22 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 13:36
Danke für Ideen...
Wie sehen die signtool Parameter denn aus?
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 13:39
Danke...
Zitat:
E:\Projects\Projects_Delphi\YYY\Certificate\Tools\ signtool.exe sign /v /s "XXX Certificate Store" /n "XXX Signierung" E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe
E:\Projects\Projects_Delphi\YYY\Certificate\Tools\ signtool.exe verify /pa /v E:\Projects\Projects_Delphi\YYY\_out\Development_R untime\YYY.exe
PS: ich habe auch das SignTool aus dem W10 SDK genommen...wie gehabt.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 13:49
Mit Windows 10 SDK signtool habe ich noch nicht gearbeitet...

unter Windows 7 und mit signtool.exe aus dem Windows 8 SDK sieht das Skript so aus:

Code:
signtool sign /fd SHA256 /a /f <pfad zur pfx Datei> /p <passwort> /t http://timestamp.comodoca.com projekt.exe
Laufzeitumgebung ist Windows 7 Enterprise (Desktop-Virtualisierung unter VMWare)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 13:58
Danke...

Wir reden über unterschiedliche Dinge...ich habe keine pfx Datei, ich habe kein Paßwort, ich habe keinen Timestamp. Das Tutorial hat immer funktioniert...was habe ich übersehen?
Zitat:
Number of files successfully Signed: 1
Number of files successfully Verified: 1

Geändert von haentschman (19. Feb 2019 um 14:00 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 14:08
Danke...
Wir reden über unterschiedliche Dinge...ich habe keine pfx Datei, ich habe kein Paßwort, ich habe keinen Timestamp. Das Tutorial hat immer funktioniert...was habe ich übersehen?
Ja, ist mir auch aufgefallen, es macht aber keinen großen Unterschied ob man mit oder ohne PFX arbeitet. Timestamp ist optional (wenn es bisher auch ohne funktioniert hat).
Werden denn die früher signierten Anwendungen weiterhin korrekt als signiert auf diesem Windows Rechner angezeigt?
Michael Justin
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#7

AW: eigenes Zertifikat

  Alt 19. Feb 2019, 14:29
Du sollst nicht mehr nur mit SHA1 signieren, sondern zusätzlich oder ausschließlich mit SHA256. Und bei SHA256 (zusätzlich) brauchst du auch den Zeitserver.

Das Tutorial ist gut, beschreibt allerdings nur SHA1 und nicht die mehrfach Signierung (SHA1/SHA256) oder eben die mit SHA256, ist somit in der Form veraltet und sollte überarbeitet werden.

Geändert von Schokohase (19. Feb 2019 um 14:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: eigenes Zertifikat

  Alt 21. Feb 2019, 06:21
Moin...
Zitat:
Du sollst nicht mehr nur mit SHA1 signieren, sondern zusätzlich oder ausschließlich mit SHA256. Und bei SHA256 (zusätzlich) brauchst du auch den Zeitserver.
Das ist nur interne Software. Mir geht es darum nur den gelben Bildschirm beim Starten des Updaters zu "verhindern". Klar kann man das besser machen.
Zitat:
Werden denn die früher signierten Anwendungen weiterhin korrekt als signiert auf diesem Windows Rechner angezeigt?
Nach dem ich das andere Zertifikat (DIMOWA®) installiert hatte, wurde die EXE (dSRG.exe) richtig erkannt.

Miniaturansicht angehängter Grafiken
zertifikat.png   signierung.png  
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: eigenes Zertifikat

  Alt 21. Feb 2019, 09:18
Vielleicht eine doofe Frage, da ich generell nur mit pfx-Zertifikaten arbeite: Kannst Du dein Wunschzertifikat nicht im Internet Explorer (ja Internet Explorer, nicht Edge) nicht als pfx exportieren?
Falls doch, dann weiß Du auf jeden Fall durch die Mitgabe als /f-Parameter, welches Zertifikat er beim Signieren verwendet.
Und dann kannst Du das Zertifikat auch als sha256 exportieren, so dass auch dies auf dem Stand der Zeit ist
Und dann sagt dir auch /v genau, was bei diesem Zertifikat nicht stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#10

AW: eigenes Zertifikat

  Alt 21. Feb 2019, 10:24
Das Tutorial ist in der Tat hoffnungslos veraltet. Selbst die KB-Artikel der diversen CAs sind meist hoffnungslos veraltet. Die Dokumentation von Microsoft existiert teils in so vielen widersprüchlichen Versionen, daß einem schlecht wird. Wer des Englischen mächtig ist, ist noch immer mit dieser Abhandlung am besten bedient. Wird von Zeit zu Zeit aktualisiert und ist besser als jegliche Informationen der vorgenannten Quellen.

Ich habe auch festgestellt, daß es durchaus ein paar Minuten dauern kann, bis eine Signatur als gültig angesehen wird. Das kann man selber testen indem man eine signierte und auf einem anderen System geprüfte Datei, welche Elevation erfordert, auf ein anderes System kopiert und startet. Zuerst kommt üblicherweise eine Warnung, während ein paar Minuten später das übliche blaue oder grüne Häkchen im Dialog auftaucht. Grund ist vermutlich, daß hier vom System auch noch die CRLs konsultiert werden und eben nicht nur der lokale Zertifikatsspeicher.

PS: ich habe auch das SignTool aus dem W10 SDK genommen...wie gehabt.
... auf? Klingt vielleicht seltsam, aber /verify basiert bspw. auf den systemspezifischen Policies. Ein Windows 10 wird sich hier also anders verhalten als ein Windows 7. Egal ob du nun das signtool aus dem neuesten Windows 10 SDK nutzt oder nicht. Sprich: benutzt du dasselbe signtool (inklusive entsprechender DLLs) auf einer anderen Windowsversion, bekommst du ein anderes Verhalten. Sogar Windows 10 1803 kann sich anders verhalten als 1809 ... aber das sind üblicherweise kleinere Sprünge als eben Windows 7 auf 10.

Übrigens gibt es nicht das Windows 10 SDK. Mittlerweile dürfte es ein halbes Dutzend geben. Auf meinem System habe ich zumindest allein vier verschiedene Windows 10 SDKs installiert (10.0.10240.0, 10.0.16299.0, 10.0.17134.0, 10.0.17763.0).

Timestamp ist optional (wenn es bisher auch ohne funktioniert hat).
Ein Zeitstempel ist immer optional, korrekt. Aber ohne Zeitstempel läuft die Signatur zusammen mit dem Zertifikat aus. Das ist eher selten gewünscht. Zumal man aus Sicherheitsgründen immer ein Zertifikat mit einer eher beschränkten Gültigkeitsdauer benutzt.

Sollte das Verhalten gewünscht sein, daß die Signatur mit der Zertifikatsgültigkeit verfällt, kann im Zertifikat noch die EKU 1.3.6.1.4.1.311.10.3.13 (Lifetime Signing) gesetzt werden ... oder man läßt halt den Zeitstempel weg. Das ist aber wiederum so unkonventionell, daß es üblicherweise auf einen Fehler des Anwenders verweist. Die EKU kannst du mit "makecert -eku 1.3.6.1.4.1.311.10.3.13" setzen ...

Falls hier die Angst bestehen sollte, daß der Zeitstempel von einem bestimmten Anbieter sein muß, so darf ich das als unbegründet zurückweisen. Beispielsweise bietet Certum keinen SHA256-gehashten-Zeitstempel an, weshalb sie auf andere Anbieter von Zeitstempelservern verweisen. Für WinDirStat benutze ich dann http://timestamp.digicert.com für SHA256 und http://time.certum.pl für SHA1.

Übrigens, als Admin würde ich an die Decke gehen wenn ein kommerzieller Softwareanbieter selbstsignierte Zertifikate benutzt und mglw. sogar noch die Zertifikate ohne deutlichen Hinweis als vertrauenswürdig installiert. Ist aber ein anderes Thema und du schreibst ja es sei allein für interne Zwecke.

...ich habe keine pfx Datei, ich habe kein Paßwort, ich habe keinen Timestamp.
Irrelevant wo das Zertifikat (bspw. Zertifikat und privater Schlüssel) herkommt. Der Zertifikatsspeicher ist aber definitiv sicherer als eine PFX-Datei die womöglich noch nicht einmal paßwortgeschützt ist.

Das Tutorial hat immer funktioniert...was habe ich übersehen?
Was du übersehen, bzw. "verschlafen" hast, sind die teils drastisch verschärften Anforderungen an Zertifikate und damit erstellte Signaturen. Siehe auch (aber nicht nur) hier.

Nach dem ich das andere Zertifikat (DIMOWA®) installiert hatte, wurde die EXE (dSRG.exe) richtig erkannt.

Was darauf hindeutet, daß signtool womöglich ein anderes Zertifikat zum Signieren aussucht, als du dachtest (mit höheren Verbosity-Leveln kannst du schauen was genau signtool da macht). Schließlich hat signtool ganz eigene Regeln welches Zertifikat genommen wird (bspw. mit der längsten Gültigkeit) wenn man nur den Namen benutzt um das Zertifikat zu identifizieren. Stattdessen sollte man eigentlich den Fingerabdruck des Zertifikats benutzen, muß dann aber das entsprechende Skript alle paar Jahre aktualisieren.

Auch immer dran denken, daß zum Signieren das Zertifikat und der passende private Schlüssel verfügbar sein müssen. Zertifikat allein reicht nur zum verifizieren einer Signatur, aber eben nicht zum Signieren.

Und dann noch ein paar Notizen ...
  • Zertifikate werden üblicherweise von einer CA (Certification Authority) signiert, diese Signatur ist üblicherweise mit SHA1 oder SHA-256 (also SHA2 mit 256bit) gehasht, die Zertifikate werden in diesem Sinn als SHA1 oder SHA2 kategorisiert
  • Die Zertifikate bis hinauf zur Wurzel sollten alle Signaturen mit dem gleichen Hash-Algorithmus gehasht sein
  • Zertifikate ohne Wurzel sind üblicherweise selbstsigniert, da aber Systeme immer den Zertifikaten aus einer Zertifikatskette vertrauen schenken, muß eben dieses Zertifikat selbst als vertrauenswürdig im System installiert werden
  • Man kann ohne weiteres ein SHA1-Zertifikat nehmen um eine Signatur zu erzeugen die einen SHA2-Hash enthält und umgekehrt
  • Gleiches gilt für Zeitstempel, auch hier kann man theoretisch mischen wie man will, sollte man aber nicht
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     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 08:17 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