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?
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).
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?
Le code horodaté est-il valide après l'expiration d'un certificat de signature de code?
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.
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.
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.