Fragensteller
Access 2007 - Überprüfung der digitalen Signatur

Allgemeine Diskussion
-
Hallo,
wir haben eine Access Datenbank, die mit einem für Windows automatisch vertraunswürdigem CodeSigning-Zertifikat inkl. Timestamp signiert wurde. Da das Zertifikat in ein paar Wochen abläuft, wollte ich vorsichtshalber testen ob sich die Datenbank dann auch noch ohne Sicherheitswarnung wird öffnen lassen. Also habe ich das Datum am PC ein wenig in die Zukunft geschraubt und bekomme nun beim Öffnen folgenden Sicherheitshinweis: "Die digitale Signatur ist abgelaufen" und in den Details "Ein erforderliches Zertifikat befindet sich nicht im Gültigkeitszeitraum gemessen an der aktuellen Systemezit oder dem zeitstempel in der signierten Datei. Danach öffnet sich dennoch die Datenbank.
Kommt die Sicherheitswarnung weil
a) das Zertifikat abgelauen ist? Wozu dann der Timestamp?
b) wenn das Zertifikat abgelaufen ist immer der Timestamp Server befragt wird und in diesem Fall keine vernünftige Antwort geben kann? Was, wenn kein Internetzugang zur Verfügung steht?
Auf http://office.microsoft.com/en-us/access/HP010446121033.aspx steht unter anderem:
When digitally signing macros, consider obtaining a timestamp so that others can verify your signature even after the certificate used for the signature has expired. See Microsoft Office Online for more information on macro security and timestamps.
Allerdings steht auf http://technet.microsoft.com/de-de/library/dd443660.aspx:
Standardmässig sind ActiveX-Steuerelemente und Makros, die von einem Herausgeber aus der Liste vertrauenswrdiger Herausgeber signiert wurden, aktiviert und werden ohne Warnung ausgefhrt, wenn die folgenden Bedingungen zutreffen:- Das ActiveX-Steuerelemente bzw. das Makro ist mit einer digitalen Signatur versehen.
- Die digitale Signatur ist gültig.
- Die digitale Signatur ist aktuell (nicht abgelaufen).
- Das mit der digitalen Signatur verbundene Zertifikat wurde von einer anerkannten Zertifizierungsstelle (Certification Authority, CA) ausgestellt.
Kann mir jemand sagen was tatsächlich passieren wird wenn das Zertifikat abgelaufen ist?
Vielen Dank im Vorhinein!- Verschoben Kay GizaMicrosoft employee Freitag, 27. August 2010 05:57 (aus:Microsoft Office System)
- Typ geändert Peter DoeringMVP, Moderator Donnerstag, 7. Oktober 2010 18:53
Alle Antworten
-
Hallo,
vertraunswürdigem CodeSigning-Zertifikat inkl. Timestamp
Also per Selfcert.exe oder ein Class 2/3-Zertifikat?
Da das Zertifikat in ein paar Wochen abläuft, [...]
Kommt die Sicherheitswarnung weil
a) das Zertifikat abgelauen ist?Ja.
Wozu dann der Timestamp?
Zertifikate sind immer zeitlich limitiert. Oeffentliche muessen
normalerweise jaehrlich erneuert werden, private sind 6 Jahre gueltig.b) wenn das Zertifikat abgelaufen ist immer der Timestamp Server befragt
wird und in diesem Fall keine vernünftige Antwort geben kann? Was, wenn
kein Internetzugang zur Verfügung steht?Dein lokales Datum wird geprueft. D.h. wenn du analog deines Tests die Uhr
zurueckstellst, sollte es funktionieren.Kann mir jemand sagen was tatsächlich passieren wird wenn das Zertifikat
abgelaufen ist?Das, was dein Test gezeigt hat. Die Meldung erscheint bei jedem
Programmstart. Das ist einer der Gruende, warum die ganze Zertifiziererei
nicht besonders angenommen worden ist. Oeffentliche Zertifikate sind teuer,
private fuer Installationen mit mehreren Frontends unsinnig, weil bei jeder
Aenderung im FE das Zertifikat auf dem Zielrechner wieder erstellt werden
muss. www.donkarl.com?FAQ2.28 kennst du?Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Peter,
Wozu dann der Timestamp?
Zertifikate sind immer zeitlich limitiert. Oeffentliche muessen
normalerweise jaehrlich erneuert werden, private sind 6 Jahre gueltig.
- Florian -
Hallo,
Florian.H wrote:
Wozu dann der Timestamp?
Zertifikate sind immer zeitlich limitiert. Oeffentliche muessen
normalerweise jaehrlich erneuert werden, private sind 6 Jahre gueltig.Eigentlich soll der Timestamp doch bestätigen das ein Zertifikat zum
Zeitpunkt der Signatur gültig war und damit die Signatur gültig ist,
nicht mehr und nicht weniger.Das Zertifikat hat immer eine Laufzeit, gueltig ab Ausstelldatum. Du kannst
es mit dem TUEV vergleichen. Es koennte ja sein, dass seit der
Zertifizierung etwas passiert ist, das die Erteilung eines neuen
Zertifikats beeinflussen wuerde.
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Das ist mir schon klar, hat aber mit dem Problem wenig zu tun, es soll ja gar nicht neu signiert werden.
Was vorliegt ist eine gültig signierte Anwendung, bei deren Ausführung plötzlich Warnungen ausgespuckt werden, weil das Zertifikat abgelaufen ist... das ist doch für einen Benutzer völlig unverständlich, "gestern war die Anwendung noch sicher und heute nicht mehr?", das weckt sicher kein Vertrauen beim Anwender und sollte nach allem was ich zum Signieren gelesen habe auch nicht so sein, um das zu vermeiden wird ja gerade der Timestamp verwendet. Um solche Warnungen zu vermeiden müsste man den Anwender regelmäßig gängeln eine frisch signierte Version zu installieren, auch wenn sich gar nichts am Programm geändert hat, was wenig Sinnvoll ist, wie ich finde.
Da es aber anders ist, muss man sich wohl kaum wundern das die "Zertifizierei" nicht besonders angenommen wird.
- Florian -
Hallo,
Florian.H wrote:
[...] und sollte nach allem was ich zum Signieren
gelesen habe auch nicht so sein, um das zu vermeiden wird ja gerade der
Timestamp verwendet.Was hast du denn wo gelesen?
Um solche Warnungen zu vermeiden müsste man den
Anwender regelmäßig gängeln eine frisch signierte Version zu
installieren, auch wenn sich gar nichts am Programm geändert hat, was
wenig Sinnvoll ist, wie ich finde.Nein. Du musst nur das Class 2/3 Zertifikat verlaengern, dann gibt es beim
Benutzer keine Meldungen. Wenn du mit Selfcert zertifiziert hast, musst du
allerdings bei jeder Aenderung ein neues Zertifikat auf dem Zielrechner
erstellen, bzw. nach 6 Jahren auch, wenn nichts geaendert worden ist.Da es aber anders ist, muss man sich wohl kaum wundern das die
"Zertifizierei" nicht besonders angenommen wird.Genau das ist der Fall. Siehe www.donkarl.com?FAQ2.28
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Peter,
unter anderem steht zum timestamp etwas in der MSDN "...Time stamping allows Authenticode signatures to be verifiable even after the certificates used for signature have expired..." http://msdn.microsoft.com/en-us/library/bb931395(VS.85).aspx
und in der Doku zum WinVerifyTrust steht dass das Prüfergebnis CERT_E_EXPIRED zurück kommt wenn die Prüfung gegenüber der Systemzeit oder dem timestamp in der signierten Datei nicht im Gültigkeitszeitraum liegt (Zitat: "A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file." ebenfalls MSDN) und demnach macht ein Zeitstempel (timestamp) doch nur Sinn, wenn bei dieser Prüfung, dieser auch entscheidend ist, wenn vorhanden.
Dann hab ich noch an anderer Stelle eine Begründung für die Verwendung von Zeitstempeln gefunden, welche meiner Meinung nach so auch Sinn macht: Zitat: "If signature timestamp is present, the application which validates (verifies) the signature, will check whether the certificates involved into signature validation were valid at the moment of signing. If there's no timestamp for the signature, certificate validity is checked for the moment of signature validation, which is not always acceptable." in einem Artikel von Eldos http://www.eldos.com/sbb/articles/5731.php
Das es den CA's nur Recht ist, wenn man immer eine Verlängerung kaufen muss, kann ich wohl nachvollziehen, aber wie ich bereits schrieb, für den Benutzer der Software ist solch ein Verhalten eine Zumutung und den zitierten Stellen nach wohl auch gar nicht so vorgesehen.
Was soll einen eigentlich davon abhalten sein eigenes Zertifikat mit 30 oder mehr Jahren Laufzeit zu erstellen, es mit einem erworbenen zu Installieren und danach unabhängig von der Gängelung der CA's zu sein?
Und woher kommt die Zahl von 6 Jahren?
Gruß
- Florian -
Hallo,
Florian.H wrote:
unter anderem steht zum timestamp etwas in der MSDN "...
Um eines klarzustellen, du laeufst bei mir offene Tueren ein. Ich halte von
der Zertifiziererei aus genannten Gruenden auch nichts. Aendert aber nichts
an den Tatsachen und die sind wie sie sind. Wenn das Zertifikat fehlt ->
Meldung. Wenn es abgelaufen ist -> Meldung. In beiden Faellen kannst du die
Anwendung ja trotzdem starten.Das es den CA's nur Recht ist, wenn man immer eine Verlängerung kaufen
muss,Genau ;-)
Was soll einen eigentlich davon abhalten sein eigenes Zertifikat mit 30
oder mehr Jahren Laufzeit zu erstellen, es mit einem erworbenen zu
Installieren und danach unabhängig von der Gängelung der CA's zu sein?Das ist technisch nicht moeglich.
Und woher kommt die Zahl von 6 Jahren?
Bevor ich meine erste Antwort schrieb, hatte ich mit Selfcert ein
Zertifikat auf meinem Rechner angelegt. Auf den Gueltigkeitszeitraum hatte
ich keinen Einfluss, er wurde mir mit 1/1/2010 - 31/12/2016 angezeigt.Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Um eines klarzustellen, du laeufst bei mir offene Tueren ein. Ich halte von
der Zertifiziererei aus genannten Gruenden auch nichts. Aendert aber nichts
an den Tatsachen und die sind wie sie sind. Wenn das Zertifikat fehlt ->
Meldung. Wenn es abgelaufen ist -> Meldung. In beiden Faellen kannst du die
Anwendung ja trotzdem starten.Was soll einen eigentlich davon abhalten sein eigenes Zertifikat mit 30
oder mehr Jahren Laufzeit zu erstellen, es mit einem erworbenen zu
Installieren und danach unabhängig von der Gängelung der CA's zu sein?Das ist technisch nicht moeglich.
Und woher kommt die Zahl von 6 Jahren?
Bevor ich meine erste Antwort schrieb, hatte ich mit Selfcert ein
Zertifikat auf meinem Rechner angelegt. Auf den Gueltigkeitszeitraum hatte
ich keinen Einfluss, er wurde mir mit 1/1/2010 - 31/12/2016 angezeigt.
- Florian -
Hallo,
Florian.H wrote:
Was soll einen eigentlich davon abhalten sein eigenes Zertifikat mit 30
oder mehr Jahren Laufzeit zu erstellen, es mit einem erworbenen zu
Installieren und danach unabhängig von der Gängelung der CA's zu sein?Das ist technisch nicht moeglich.
Dem muss ich Widersprechen, ich habe zu Testzwecken bereits eigene
Zertifikate installiert.Nochmal Klartext: Es ist moeglich, ein eigenes Zertifikat zu erstellen, wie
im Thread bereits mehrfach erwaehnt, per Selfcert fuer den operationalen
Einsatz (wenn auch kompliziert), und per Makecert fuer Testzwecke.Du schreibst, "eigenes ... erstellen ... mit erworbenem ... installieren",
das ist nicht moeglich. Du kannst die Anwendung entweder mit einem
selbst erstellten oder oeffentlichen Zertifikat signieren. Sollte ich
deinen Kommentar missverstanden haben, klaer mich auf ;-)
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Peter!
Mir ist ehrlich gesagt überhaupt gar nicht klar warum Du der Meinung bist, dass man kein Installationspaket, welches das eigene Zertifkat installiert, erstellen kann, welches man dann mit einem erworbenen Zertifikat signiert, damit der Benutzer schon bei der Installation keinerlei Begegnung mit entsprechenden Meldungen hat. Wenn man dann sein eigenes Zertifikat installiert hat, dann kann auch die Anwendung damit signiert sein und der Anwender bekommt auch bei Programmausführung keine Meldungen wegen ungültiger oder abgelaufener Zertifikate. Ob ich nun ein Zertifkat installiere das ich mit SelfCert oder mit MakeCert erstellt habe spielt dabei überhaupt keine Rolle und ja, ich weiß das in der Doku steht man solle die Makecert Zertifikate nur zu Testzwecken benutzen.
Ich habe es noch nicht geprüft, aber unterscheiden sich die Zertifikate überhaupt voneinander, also eines das mit SelfCert und eines das mit MakeCert erstellt wurde? Kann Windows ein Testzertifikat irgendwie erkennen? Vielleicht gibt es ja zukünftig Meldungen bei Access wenn es sich um ein Testzertifikat handelt...
Ich hoffe es ist klar geworden was ich meine. Sonst möchte ich es auch gern dabei belassen da die Diskussion nichts mehr mit der gestellten Frage zu tun hat.
Gruß
- Florian -
Hallo,
Florian.H wrote:
Mir ist ehrlich gesagt überhaupt gar nicht klar [...]
Wir reden offensichtlich aneinander vorbei. Meine Kommentare betreffen das Signieren einer Access-Anwendung in seinen Varianten, deine drehen sich um das Erstellen/Verteilen von Zertifikaten im Allgemeinen. Dem widerspreche ich auch nicht.
Wenn man dann sein eigenes Zertifikat installiert hat, dann kann auch die
Anwendung damit signiert sein und der Anwender bekommt auch bei
Programmausführung keine Meldungen wegen ungültiger oder abgelaufener
Zertifikate.Das ist genau der Punkt. Wenn Zertifikat und Anwendung ok sind, kommt keine Meldung. Aber in den beiden Faellen, 1) wenn das Zertifikat abgelaufen ist, wie weiter oben bereits diskutiert und 2) wenn sich die Anwendung seit der letzten Signatur veraendert hat, kommt die Meldung. Das ist ja der Zweck der Zertifizierung. Ok, es gibt weitere Faelle, z.B. wenn ein oeffentliches Zertifikat widerrufen wird, aber den Fall koennen wir vernachlaessigen.
Ich habe es noch nicht geprüft, aber unterscheiden sich die Zertifikate
überhaupt voneinander, also eines das mit SelfCert und eines das mit
MakeCert erstellt wurde? Kann Windows ein Testzertifikat irgendwie
erkennen? Vielleicht gibt es ja zukünftig Meldungen bei Access wenn es
sich um ein Testzertifikat handelt...Das weiss ich auch nicht, mangels eigener Erfahrung mit MakeCert. Auch http://msdn.microsoft.com/de-de/library/bfsktky3%28VS.80%29.aspx schweigt sich darueber aus. Fuer SelfCert gilt, dass das Zertifikat immer nur fuer den ausfuehrenden Rechner gilt, d.h. jeweils am Zielrechner erstellt, und bei jeder Aenderung der Anwendung wieder signiert werden muss. Ansonsten -> Meldung. Ich kann mir vorstellen, dass es mit MakeCert nicht anders ist. Der Vorteil von Class 2/3-Zertifikaten ist, dass sie online geprueft werden und wir Entwickler uns bis zum Ablauf um nichts weiter kuemmern muessen.
Ich hoffe es ist klar geworden was ich meine. Sonst möchte ich es auch
gern dabei belassen da die Diskussion nichts mehr mit der gestellten
Frage zu tun hat.ACK, obwohl wir IMO On-Topic sind.
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com