Pourquoi?
Il y a quelque temps, j’ai écrit un article sur l’obtention d’un certificat de signature de code pour signer vos DLL Revit et satisfaire les exigences de leurs plugins. Cet article a été écrit en mars 2017, lorsque Autodesk introduisait cette fichue fenêtre contextuelle pour les plugins non signés avec un certificat de signature de code.
Nous détestions tous ces pop-ups et voulions nous en débarrasser. À l’époque, j’ai suivi la suggestion de Harry Mattison de Boost Your BIM, qui avait obtenu son certificat auprès d’une société appelée K-Software, pour une durée de 5 ans, au prix assez élevé de 365 $. Depuis lors, j’obtiens mes certificats auprès de K-Software via COMODO via SECTIGO. Je sais, c’est compliqué, mais ce sont tous des intermédiaires. Je pense que COMODO est l’autorité de certification réelle, et K-Software et SECTIGO vendent simplement ce produit et fournissent une validation. Oui, la validation. C’est là que nous arrivons au but de cet article. Au cours des 5 dernières années, j’ai dû me valider auprès de SECTIGO à plusieurs reprises, car ils ne vendent plus de certificats de signature de code de 5 ans. De nouvelles réglementations les obligent à émettre des certificats de signature de code d’une durée maximale de 2 à 3 ans. C’est extrêmement ennuyeux. Si vous avez déjà dû passer par ce processus, vous connaissez ma douleur. C’est un véritable désastre. Cela ne devrait probablement pas l’être, mais SECTIGO est une entreprise si nulle qu’elle a vraiment réussi à me détourner de quelque chose dont j’ai absolument besoin pour exercer mon travail. Oui, je n’obtiens plus mes certificats auprès de SECTIGO. Si il y a 5 ans, je disais que je ne recommandais aucune entreprise en particulier, aujourd’hui, je vous dis de rester loin de SECTIGO. Leur processus de validation vous donnera envie de jeter votre ordinateur contre le mur.
Alors, quelle est l’alternative? J’ai essayé quelque chose appelé Certum, qui est une filiale d’une société polonaise appelée Asseco. Je me suis dit que je parle polonais, donc je peux gérer le fait que leur site web et leur processus ne soient pas complètement traduits en anglais. Attention, ce n’est pas le cas. Beaucoup de leurs vidéos et documents contiennent beaucoup de polonais. En tout cas, j’ai obtenu un certificat auprès d’eux, et il s’est avéré que c’était aussi une erreur. Leur processus de validation était un peu meilleur, mais le certificat qu’ils délivrent est verrouillé dans leur logiciel propriétaire appelé SimplySign, et vous ne pouvez l’utiliser que sur votre ordinateur de bureau. Vous n’obtenez pas votre clé privée (PFX) de leur part, vous ne pourrez donc pas l’utiliser, par exemple, dans GitHub dans le cadre du flux de sortie. J’ai décrit ce processus ici. C’est à éviter. J’en avais assez à ce stade.
Et si je créais mon propre certificat? Je ne pense pas que cela importe beaucoup que mes plugins Revit soient signés avec un certificat délivré par un tiers qui a validé l’existence de mon entreprise, ma personne réelle, etc. Tout cela est important et bien, mais est-ce nécessaire pour quelque chose d’aussi simple que la signature de code de plugins Revit pour éviter les pop-ups? Je pense qu’il est temps d’arrêter de payer ces entreprises pour me soumettre à un processus de validation sans fin, juste pour obtenir quelque chose que je peux obtenir par moi-même en 5 minutes. Voici comment faire.
Comment faire?
Ouvrez votre Visual Studio en tant qu’administrateur.
Ensuite, allez dans Outils > Ligne de commande > Command Prompt pour développeur.
Vous devriez obtenir cette fenêtre:
C:Program Files (x86)Microsoft Visual Studio 14.0>
D’accord, maintenant tapons du code. L’idée ici est de faire quelques choses:
- Créer une autorité de certification (CA)
- Enregistrer cette CA dans notre magasin de certificats
- Créer un certificat de signature de code (SPC)
- Convertir ce certificat de signature de code du format PVK au format PFX
Cela vous invitera à entrer un mot de passe pour votre CA.
Une fois que vous avez créé ce mot de passe, vous obtiendrez une autre invitation pour le fournir maintenant.
Vous devriez obtenir un message “Réussi”.
D’accord, maintenant installons cette autorité de certification pour notre utilisateur actuel. Cela l’ajoutera au magasin de certificats et en fera une autorité de certification de confiance sur votre ordinateur.
Il est possible que vous obteniez une fenêtre contextuelle vous demandant si vous faites confiance à cette autorité de certification et si vous voulez vraiment l’ajouter à votre magasin. Cliquez sur “Oui”.
Votre invite de commandes affichera maintenant que le certificat a été installé avec succès.
Nous pouvons maintenant utiliser cette autorité de certification pour générer un certificat de signature de code.
Encore une fois, on vous demandera de créer un mot de passe pour votre certificat de signature de code.
Ensuite, vous devrez fournir ce même mot de passe comme précédemment.
Mais cette fois, il y aura une troisième fenêtre contextuelle demandant le mot de passe de la CA de l’étape précédente. L’autorité de certification est appelée “Emetteur” ici.
Si tout se passe bien, vous devriez obtenir le message suivant dans votre invite de commandes:
Succès
Jusqu’à présent, tout va bien. La dernière étape consiste à convertir le certificat de signature de code du format PVK au format PFX, que nous pourrons ensuite utiliser localement ou à distance dans GitHub.
pvk2pfx.exe -pvk YOUR_PRIVATE_KEY_FILE.pvk -spc YOUR_CODE_SIGNING.cert -pfx YOUR_OUTPUT_FILE.pfx -pi YOUR_PRIVATE_KEY_FILE_PASSWORD -po YOUR_PFX_FILE_PASSWORD
Le “YOUR_PRIVATE_KEY_FILE.pvk” dans la commande ci-dessus fait référence au fichier PVK qui contient votre clé privée.
Le “YOUR_CODE_SIGNING.cert” est le nom du fichier de certificat de signature de code que vous avez précédemment créé.
Le “YOUR_OUTPUT_FILE.pfx” est le nom du fichier PFX résultant que vous souhaitez obtenir.
Le “YOUR_PRIVATE_KEY_FILE_PASSWORD” dans la commande ci-dessus fait référence à un troisième mot de passe. C’est le mot de passe du fichier PFX qui protège la clé privée intégrée dans le fichier.
Vous serez invité à fournir un mot de passe créé à l’étape 2. Il s’agit du mot de passe de votre certificat de signature de code.
Résumé
C’est tout ! Vous devriez maintenant avoir créé votre fichier PFX que vous pouvez utiliser avec signtool et signer gratuitement vos plugins Revit ! Ce certificat de signature de code auto-signé n’expirera pas avant 17 ans, vous devriez donc être tranquille pendant un moment.
Maintenant, il faut savoir que ce certificat de signature de code auto-signé n’est pas identique à celui délivré par un tiers. Je suppose que le niveau de “confiance” ici serait un peu différent, mais dans ce cas particulier, je ne pense pas que cela ait une grande importance pour moi. J’en ai assez de payer de l’argent à des entreprises qui offrent un service client exécrable. Si vous utilisez ces certificats de signature de code uniquement pour signer des plugins Revit, il n’y a aucune raison d’en obtenir un auprès d’un tiers et de payer un prix exorbitant en plus de tous les obstacles auxquels ils vous feront faire face.
J’espère que cela aidera certains membres de la communauté du développement AEC à économiser de l’argent et du temps.
Cheers!