Nous effectuons la signature de code et l'horodatage pour toutes nos versions de production. Occasionnellement (généralement lorsque nous sommes sur le point RTM (!)) Le serveur d’horodatage de Verisign (" http://timestamp.verisign.com/scripts/timstamp.dll = ") décide de se déconnecter par intermittence.
Que devrions-nous faire dans ce cas?
J'utilise le fichier de commandes suivant qui boucle un maximum de 300 fois. Il y a deux arguments,% 1 est le chemin d'accès à un dossier contenant le fichier de commandes, le fichier pfx et signtool.exe. % 2 est le chemin complet du fichier en cours de signature. Vous pouvez appeler cela dans votre événement post-build Visual Studio avec l’appel "$ (SolutionDir) thirdparty\signature\sign.bat" "$ (SolutionDir) thirdparty\signature" "$ (TargetPath)" J'ai modifié ce fichier de commandes en utilisez des serveurs d'horodatage différents à chaque itération. Actuellement, il utilise Comodo, Verisign, GlobalSign et Starfield. J'espère que c'est le script de signature ultime;)
@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
J'ai aussi mis http://timestamp.comodoca.com dans les sites de confiance (merci Vince). Je pense que cela peut être une étape importante. J'ai également mis à jour les certificats racine sur le PC.
Je ne sais pas si le serveur d'horodatage doit appartenir à l'autorité de certification racine ou non.
Nous utilisons http://timestamp.comodoca.com/authenticode (et avons un certificat d'authenticité Comodo), mais nous avons un problème similaire, en ce sens que leur serveur semble donner une erreur ou un délai d'inactivité de temps à autre. Nous signons dans le cadre d'une génération nocturne (ou à la demande) sur notre serveur d'intégration continue pour les générations Release uniquement (pas pour les versions Debug).
Je l'ai contourné (principalement) de deux manières:
Entre celles-ci, les échecs de construction causés par des problèmes de serveur d'horodatage sont passés d'une ou deux fois par semaine à pratiquement jamais.
EDIT: J'ai une tâche MSBuild qui effectue cette opération (ainsi que lit un mot de passe de certificat stocké à l'extérieur du référentiel ) à l'adresse https://Gist.github.com/gregmac/4cfacea5aaf702365724 =
Cela fonctionne bien en remplaçant l'URL d'horodatage de Verisign par l'un de ceux-ci:
http://timestamp.comodoca.com/authenticode
http://www.trustcenter.de/codesigning/timestamp
Tous les serveurs d’horodatage peuvent être utilisés: j’ai récemment changé de serveur d’horodatage de mon émetteur vers Verisign car j’ai constaté que le serveur de GlobalSign n’était pas fiable. De plus, Thawte n’exécute pas son propre serveur d’horodatage mais recommande les personnes qui utilisent Verisign.
Le service d'horodatage de VeriSign est gratuit. C'est peut-être pour cela que sa fiabilité est moins qu'adéquate; ils ne lui accordent pas un budget d'entretien!
C'est certainement un gros problème. La perte de temps due aux échecs de construction dus aux échecs d'horodatage du code est un problème croissant dans l'ensemble du secteur du développement logiciel. Bien sûr, vous pouvez écrire un script complexe dans lequel effectuer la rotation, jusqu’à ce que vous trouviez un serveur d’horodatage .. mais vraiment?
Nous devrions exiger mieux. Nous payons BEAUCOUP pour ces certificats.
Notez que j’ai découvert par la suite que d’autres serveurs d’horodatage dont peu de gens ont entendu parler étaient pratiques à utiliser pendant les périodes de panne de Verisign et de Comodo (ce qui se produit généralement pendant les heures de travail les jours ouvrables).
J'ai eu le même problème. Le serveur verisign n'était parfois pas accessible pour certains fichiers que j'ai essayé de signer (mais d'autres fichiers de la même version étaient correctement signés).
Je réessaye habituellement et ça marche mais aujourd'hui, c'est impossible.
Donc, après quelques recherches inutiles sur Internet, j'ai essayé de mettre http: //*.verisign.com dans des sites de zones de confiance et cela fonctionne ... Enfin, je ne sais pas si le serveur a eu un problème et fonctionne maintenant ou si j'ai fait le bonne chose, va voir dans les prochains jours, je pense. J'espère que cela pourra aider d'autres personnes bloquées.
La configuration du serveur: Windows Server 2003 SP2, IE8, sécurité renforcée.