webentwicklung-frage-antwort-db.com.de

Alternative Zeitstempeldienste für Authenticode

Wir führen Code Signing und Timestamping für alle unsere Produktions-Builds durch. Gelegentlich (normalerweise, wenn wir im Begriff sind, RTM (!)) Den Zeitstempelserver bei Verisign (" http://timestamp.verisign.com/scripts/timstamp.dll = ") beschließt, zeitweise offline zu gehen.

Was sollen wir in diesem Fall tun?

  • Muss der Zeitstempelserver von Ihrer Stammzertifizierungsstelle gehostet werden?
  • Gibt es andere im Netzwerk gehostete Zeitstempelserver, die wir anstelle von Verisign verwenden könnten, wenn der Server ausfällt? Vorschläge für andere hochverfügbare und kostenlose Alternativen sind willkommen :)
104

Ich verwende die folgende Batch-Datei, die maximal 300-mal wiederholt wird. Es gibt zwei Argumente:% 1 ist der Pfad zu einem Ordner, der die Batchdatei, die pfx-Datei und signtool.exe enthält. % 2 ist der vollständige Pfad zu der zu signierenden Datei. Sie können dies in Ihrem Visual Studio-Postbuild-Ereignis mit einem Aufruf wie "$ (SolutionDir) thirdparty\signing\sign.bat" "$ (SolutionDir) thirdparty\signing" "$ (TargetPath)" aufrufen. Ich habe diese Batch-Datei in geändert Verwenden Sie in jeder Iteration unterschiedliche Zeitstempelserver. Derzeit werden Comodo, Verisign, GlobalSign und Starfield verwendet. Hoffentlich ist dies das ultimative Signaturskript;)

@echo off    

REM create an array of timestamp servers...
set SERVERLIST=(http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://timestamp.globalsign.com/scripts/timestamp.dll http://tsa.starfieldtech.com)

REM sign the file...
%1\signtool.exe sign /f %1\comodo.pfx /p videodigital %2

set timestampErrors=0

for /L %%a in (1,1,300) do (

    for %%s in %SERVERLIST% do (

        REM try to timestamp the file. This operation is unreliable and may need to be repeated...
        %1\signtool.exe timestamp /t %%s %2

        REM check the return value of the timestamping operation and retry a max of ten times...
        if ERRORLEVEL 0 if not ERRORLEVEL 1 GOTO succeeded

        echo Signing failed. Probably cannot find the timestamp server at %%s
        set /a timestampErrors+=1
    )

    REM wait 2 seconds...
    choice /N /T:2 /D:Y >NUL
)

REM return an error code...
echo sign.bat exit code is 1. There were %timestampErrors% timestamping errors.
exit /b 1

:succeeded
REM return a successful code...
echo sign.bat exit code is 0. There were %timestampErrors% timestamping errors.
exit /b 0

Ich habe auch http://timestamp.comodoca.com in die vertrauenswürdigen Sites eingefügt (danke Vince). Ich denke, das könnte ein wichtiger Schritt sein. Ich habe auch die Stammzertifikate auf dem PC aktualisiert.

83
flobadob

Ich bin nicht sicher, ob der Zeitstempelserver der Stammzertifizierungsstelle gehören muss oder nicht.

Wir verwenden http://timestamp.comodoca.com/authenticode (und haben ein Comodo-Authenticode-Zertifikat), haben jedoch tatsächlich ein ähnliches Problem, da der Server gelegentlich einen Fehler oder eine Zeitüberschreitung zu melden scheint. Wir signieren im Rahmen eines nächtlichen Builds (oder On-Demand-Builds) auf unserem Continuous Integration Server nur für Release-Builds (nicht für Debug-Builds).

Ich bin (meistens) auf zwei Arten umgegangen:

  • Wenn der Aufruf von signtool.exe fehlschlägt, versucht er es (sofort) noch zweimal
  • Das Erstellungsskript, mit dem jede Exe in einem Schritt signiert wurde (und wir haben mehrere als Teil unseres Produkts), dauert jetzt nacheinander etwas länger, ist aber weniger wahrscheinlich, dass es fehlschlägt

Dazwischen sind Build-Fehler, die durch Zeitstempelserverprobleme verursacht wurden, von ein- oder zweimal pro Woche auf praktisch nie zurückgegangen.

BEARBEITEN: Ich habe eine MSBuild-Aufgabe, die dies erledigt (sowie liest ein außerhalb des Repositorys gespeichertes Zertifikatspasswort ) unter https://Gist.github.com/gregmac/4cfacea5aaf702365724 =

14
gregmac

Es funktioniert gut, indem die verisigne Zeitstempel-URL durch eine der folgenden ersetzt wird:

http://timestamp.comodoca.com/authenticode
http://www.trustcenter.de/codesigning/timestamp

12
David

Jeder Zeitstempelserver kann verwendet werden: Ich bin kürzlich vom Zeitstempelserver meines Ausstellers zu Verisign gewechselt, da ich festgestellt habe, dass der GlobalSign-Server unzuverlässig ist. Darüber hinaus betreibt Thawte keinen eigenen Zeitstempelserver, sondern empfehlen Personen, die Verisigns verwenden.

7
BCran

Der Zeitstempeldienst von VeriSign ist kostenlos. Das ist vielleicht der Grund, warum die Zuverlässigkeit nicht ausreicht. Sie geben es keine Wartung ein Budget!

Dies ist definitiv ein großes Problem. Zeitverschwendung aufgrund fehlgeschlagener Builds aufgrund von Fehlern bei der Code-Zeitstempelung ist ein wachsendes Problem in der gesamten Softwareentwicklungsbranche. Sicher, Sie können ein komplexes Skript schreiben, um es zu durchlaufen, bis Sie einen funktionierenden Zeitstempelserver gefunden haben. Aber, wirklich?

Wir sollten besser verlangen. Für diese Zertifikate zahlen wir VIEL.

Beachten Sie, dass ich später alternative Zeitstempelserver gefunden habe, von denen nur wenige gehört haben, dass sie in Zeiten, in denen Verisign und Comodo nicht verfügbar sind, problemlos verwendet werden können (normalerweise während der Arbeitszeit an Werktagen).

6
dyasta

Ich hatte das gleiche problem Verisign-Server war für einige Dateien, die ich signieren wollte, nicht erreichbar (andere Dateien im selben Build wurden jedoch korrekt signiert).

Normalerweise versuche ich es erneut und es funktioniert aber heute auf keinen Fall.

Nach einigen ungewöhnlichen Recherchen im Internet habe ich versucht, http: //*.verisign.com in Sites für vertrauenswürdige Zonen einzufügen, und es funktioniert ... Endlich weiß ich nicht, ob der Server ein Problem hatte und jetzt funktioniert oder ob ich das getan habe Richtig, werde ich in den nächsten Tagen sehen, denke ich. Hoffe es kann anderen helfen die geblockt sind.

Die Serverkonfiguration: Windows Server 2003 SP2, IE8, erhöhte Sicherheit auf.

3
Vince