web-dev-qa-db-fra.com

Que se passe-t-il lorsqu'un certificat de signature de code expire?

J'envisage d'acheter un certificat de signature de code auprès de VeriSign ou Thawte pour signer un XBAP avec. Ma question est la suivante: que se passe-t-il lorsque ce certificat expire? 299 $ et 599 $ sont des prix assez élevés pour les certificats 1 an/2 ans, et si je dois livrer une construction nouvellement signée à mes clients chaque fois que mon certificat expire, alors je vais juste gérer les tracas de la création de mon propre certificat pour maintenant.

Ce que je n'aime pas dans la création de mon propre certificat, c'est la difficulté de le distribuer à toutes les machines clientes qui utiliseront mon XBAP. Mon application ne sera jamais utilisée que sur un réseau local, donc je suppose que je pourrais toujours utiliser Windows Installer pour installer mon certificat brassé à la maison (bien que je ne sois pas sûr de savoir comment faire - quelqu'un a des idées?).

Ce ne serait pas vraiment un problème si je livrais une application de confiance partielle - mais mon application a besoin d'autorisations Web, car elle parlera aux services WCF, elle se trouve donc dans cette zone grise entre la confiance partielle et la confiance totale, et sans certificat, j'obtiens ce message ole Trust Not Granted amusant lorsque j'essaie de charger mon XBAP.

Des idées?

48
Rob

Ce que vous devez faire si vous prévoyez de l'utiliser dans un environnement fermé (LAN) est de configurer votre propre autorité de certification. Les versions de Windows Server incluent une autorité de certification facile à utiliser, mais il est encore plus facile de configurer une autorité de certification minimale au moyen de la demoCA fournie par openssl , qui se compose de plusieurs scripts. Vous pouvez exécuter openssl demoCA dans Cygwin sous Windows ou nativement . Cette demoCA se compose de plusieurs scripts Perl/bash qui appellent les commandes openssl pour générer des requêtes, signer des certificats/crls, etc.

Lorsque vous avez votre propre autorité de certification, ce que vous devez installer est votre certificat racine d'autorité de certification, il n'y aura donc plus de tracas pour mettre à jour les certificats utilisateur car le certificat d'autorité de certification restera le même. En règle générale, un certificat d'autorité de certification devrait durer de 5 à 10 ans, mais vous pouvez en configurer autant que vous le souhaitez (n'oubliez pas qu'il s'agit de votre propre autorité de certification).

Le certificat CA sera installé sur chaque machine client. Si votre application fait confiance à la sécurité du système Windows, elle doit être installée sur le magasin de clés des autorités de certification IExplorer. Si vous utilisez une application Java Java, vous devez distribuer le certificat CA à l'intérieur du magasin de clés Java que vous utilisez).

7
Fernando Miguélez

Si vous horodatez votre code alors que le certificat est valide l'effet est que vos certificats expirés sont bons.

De FAQ sur le certificat de signature de code Thawte :

Pendant combien de temps puis-je utiliser un certificat de signature de code?

  • Les certificats de signature de code sont valables 1 ou 2 ans selon le cycle de vie que vous choisissez lorsque vous achetez le certificat. Remarque: pour Microsoft® Authenticode® (Multi-Purpose), vous devez également horodater votre code signé pour éviter qu'il expire à l'expiration de votre certificat.

Le code horodaté est-il valide après l'expiration d'un certificat de signature de code?

  • Microsoft® Authenticode® (Multi-Purpose) vous permet d'horodater votre code signé. L'horodatage garantit que le code n'expirera pas lorsque le certificat expirera car le navigateur valide l'horodatage. Le service d'horodatage est fourni avec l'aimable autorisation de VeriSign. Si vous utilisez le service d'horodatage lors de la signature de code, un hachage de votre code est envoyé au serveur de VeriSign pour enregistrer un horodatage pour votre code. Le logiciel d'un utilisateur peut distinguer le code signé avec un certificat expiré qui ne devrait pas être approuvé et le code qui a été signé avec un certificat qui était valide au moment où le code a été signé mais qui a expiré par la suite.
77
Martin Vobr

Attention aux certificats avec WTD_LIFETIME_SIGNING_FLAG défini: cela signifie (malgré ce que vous pensez du nom) qu'un programme signé avec le certificat est invalide après l'expiration du certificat, même si le programme n'a pas changé et le certificat était valide lors de sa signature.

Cela affecte également les mises à jour, car même si le client coche la case pour approuver tous les programmes de votre entreprise, si votre programme de mise à jour n'est pas signé avec le même certificat (ou que ce certificat expire), la confiance échoue.

De: http://download.Microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx


Traitement d'horodatage avec sémantique de signature à vie

Les applications ou les autorités de certification qui ne souhaitent pas que les signatures horodatées soient vérifiées avec succès pendant une période indéterminée ont deux options:

• Définissez le signataire à vie OID dans le certificat de signature de l'éditeur.

Si le certificat de signature de l'éditeur contient le signataire à vie OID en plus de l'OID de signature du code PKIX, la signature devient invalide lorsque le certificat de signature de l'éditeur expire, même si la signature est horodatée. Le signataire à vie = OID est défini comme suit:

szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13

• Définissez le WTD_LIFETIME_SIGNING_FLAG dans la structure WINTRUST_DATA lors de l'appel de WinVerifyTrust.

Si un appelant WinVerifyTrust définit WTD_LIFETIME_SIGNING_FLAG dans la structure WINTRUST_DATA et que le certificat de signature de l'éditeur a expiré, WinVerifyTrust signale la signature comme non valide même si la signature est horodatée.

Si un éditeur révoque un certificat de signature de code qui contient le signataire à vie OID ou un appelant WinVerifyTrust définit WTD_LIFETIME_SIGNING_FLAG dans la structure WINTRUST_DATA, WinVerifyTrust signale la signature comme valide si les deux conditions suivantes sont remplies:

• La signature a été horodatée avant la date de révocation.

• Le certificat de signature est toujours dans sa période de validité. Après l'expiration de la période de validité, la signature devient invalide.


Par exemple: https://forum.startcom.org/viewtopic.php?f=15&t=2215&p=6827&hilit=lifetime+signing#p6827

C'est un grave problème avec les certificats StartSSL. Cela ne me surprend pas qu'il y ait des limitations dans un certificat qui coûte si peu, mais enterrer cette limitation dans les petits caractères ou dans un ancien post de forum au lieu de le préciser dans la description du produit est une mauvaise affaire. Ils peuvent le réparer à l'avenir, et d'autres peuvent ou non avoir la même limitation, donc un e-mail à vérifier avant de dépenser pourrait être judicieux.

Devinez qui ne savait pas demander? LOL ... eh bien, vivez et apprenez.

26
James Newton

Si vous vous assurez d'ajouter un horodatage lors de la signature des fichiers binaires, vous n'aurez pas à les signer à nouveau à l'expiration du certificat. Ajoutez simplement "/ t http://timestamp.verisign.com/scripts/timstamp.dll " à la ligne de commande de signtool et la signature numérique sera toujours marquée comme valide sauf si le certificat est révoqué et l'autorité de certification est approuvée.

La raison pour laquelle les certificats de signature de code sont si chers est que quelqu'un doit vérifier que vous êtes bien qui vous dites être. Dans mon cas, ils ont vérifié l'adresse et le numéro de téléphone et m'ont téléphoné. Les certificats de Comodo semblent cependant légèrement moins chers.

11
BCran