visual studio 2010 - Impossible d'importer le fichier de clés 'blah.pfx'-erreur 'Le fichier de clés peut être protégé par mot de passe'




visual-studio-2010 visual-studio (15)

Après avoir essayé toutes ces solutions (et beaucoup plus), j'ai trouvé que le problème se situait ailleurs. Pour les personnes qui traversent la même misère que moi après avoir acheté un certificat, je partagerai la solution à mon problème.

Comportement

Je comprends que «signe» applique un nom fort et pas un authenticode à une DLL ou un EXE. C'est pourquoi signtool fonctionnera dans ce cas, mais "signer" dans Visual Studio ne fonctionnera pas.

Raison

Dans le passé j'ai eu l'expérience avec des certificats de Verisign. Ils ont un KeySpec=2 dans le certificat - qui est utilisé avec la fonctionnalité 'signe' dans Visual Studio. Ces certificats fonctionnent correctement pour Visual Studio et SignTool.

J'ai maintenant acheté des certificats de Comodo, qui ont un KeySpec=1 incorrect KeySpec=1 dans les certificats de signature de code. Cela signifie que ces certificats fonctionnent bien avec signtool (authenticode) mais pas avec un nom fort (le menu déroulant des signes).

Solution

Il y a deux façons de résoudre ce problème:

  1. Créez un certificat séparé pour votre nom fort en utilisant sn -k [name].snk . Signer l'assembly en utilisant le snk et ensuite utiliser signtool avec votre certificat de signature de code pour signer la DLL / EXE avec la signature authenticode. Bien que cela semble étrange, d'après ce que je comprends c'est une façon correcte de traiter les certificats, parce que les noms forts ont un but différent de authenticode (voir aussi ce lien pour plus de détails sur comment cela fonctionne).
  2. Importez votre certificat en tant que KeySpec=2 . La procédure pour cela est détaillée ici .

Parce que je veux utiliser plusieurs noms forts, j'utilise actuellement l'option (1), bien que l'option (2) fonctionne également.

Pour que cette solution ne soit jamais perdue à l'avenir, voici la procédure de la solution 2:

  1. L'utilisation de la console MMC «Certifiates» permet d'exporter le jeu de KeySpec=1 existant ( KeySpec=1 ) dans un fichier PFX. Remarque: Veuillez sauvegarder ce fichier dans un endroit sûr et tester si le fichier peut être importé correctement sur une autre machine si vous voulez vraiment le jouer en toute sécurité!
  2. Supprimez le certificat existant du magasin de chiffrement (stlll en utilisant la console MMC).
  3. Ouvrez une invite CMD.
  4. Importez le fichier PFX en utilisant cette commande:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. Entrez le mot de passe pour le pfx lorsque vous y êtes invité.

Vous devriez maintenant avoir un jeu de clés / certificat avec KeySpec=2 . Si nécessaire, vous pouvez maintenant l'exporter dans un autre fichier PFX à l'aide de la console MMC.

Nous venons de mettre à jour nos projets Visual Studio 2008 vers Visual Studio 2010. Tous nos assemblages ont été fortement signés à l'aide d'un certificat de signature de code Verisign . Depuis la mise à niveau, nous avons continuellement l'erreur suivante:

Impossible d'importer le fichier de clé suivant: companyname.pfx. Le fichier de clé peut être protégé par mot de passe. Pour corriger cela, réessayez d'importer le certificat ou installez manuellement le certificat dans le CSP de nom fort avec le nom de conteneur de clé suivant: VS_KEY_3E185446540E7F7A

Cela arrive sur certaines machines de développement et pas d'autres. Certaines méthodes utilisées pour corriger ce qui a fonctionné une partie du temps incluent:

  • Réinstallation du fichier de clé à partir de l'Explorateur Windows (clic droit sur le fichier PFX et cliquez sur Installer)
  • L'installation de Visual Studio 2010 sur une nouvelle machine pour la première fois vous invite à entrer le mot de passe la première fois que vous ouvrez le projet, puis cela fonctionne. Sur les ordinateurs mis à niveau à partir de Visual Studio 2008, cette option n'est pas disponible.

J'ai essayé d'utiliser l'utilitaire SN.EXE (Strong Name Tool) pour enregistrer la clé avec le CSP Strong Name comme le message d'erreur le suggère, mais chaque fois que j'exécute l'outil avec des options utilisant la version fournie avec Visual Studio 2010, SN .EXE liste juste ses arguments de ligne de commande au lieu de faire n'importe quoi. Cela arrive indépendamment des arguments que je fournis.

Pourquoi cela se produit-il, et quelles sont les étapes à suivre pour y remédier? Je suis sur le point d'abandonner les installations ClickOnce et la signature de code Microsoft.


Cela a résolu mon problème: Ouvrez votre projet VS

Double-cliquez sur Package.appxmanifest

Aller à l'onglet Emballage

cliquez sur choisir le certificat

cliquez sur configurer le certificat

sélectionnez à partir du fichier et utilisez example.pfx cette unité ou toute autre chose créée


Dans mon scénario le service de génération n'utilisait pas le même compte d'utilisateur que j'ai importé la clé en utilisant sn.exe .

Après avoir changé le compte sur mon compte d'administrateur, tout fonctionne très bien.


En tant qu'auteur original du travail sur le rapport de bug de connexion, il y a DEUX variantes de ce message (que j'ai découvert plus tard)

Pour une variante, vous utilisez sn.exe (généralement si vous faites un nom fort) pour importer la clé dans le magasin de nommage fort.

L'autre variante pour laquelle vous utilisez certmgr à importer est lorsque vous codez pour des choses comme le déploiement en un clic (notez que vous pouvez utiliser le même CERT pour les deux objectifs).

J'espère que cela t'aides.


J'ai découvert un correctif qui vous permet de créer avec succès dans un environnement multi-développeur:

Au lieu de changer le mot de passe (qui provoque la modification du fichier .pfx), resélectionnez le fichier .pfx de la liste déroulante. Cela appelle ensuite la boîte de dialogue de mot de passe. Après avoir entré le mot de passe, le projet va construire OK. Chaque dev peut le faire sur sa machine locale sans réellement modifier le fichier .pfx.

J'ai toujours des problèmes pour que les assemblys soient signés sur notre serveur de build. Je reçois la même erreur, mais l'utilisation de la méthode sn.exe -i ne résout pas le problème pour le buildserver.


J'ai eu le même problème après avoir déplacé mon installation de Windows sur un SSD . Aucune des autres solutions n'a fonctionné pour moi.

Ma solution était d'ouvrir le fichier de projet dans le Notepad - Notepad et de supprimer toutes les références aux clés PFX. Une fois le fichier enregistré, ouvrez la solution dans Visual Studio. Allez dans le projet -> Propriétés -> Signature. Vous ne devriez voir aucune clé répertoriée dans la zone de liste déroulante «choisir le fichier de clés fort». Dans la zone de liste déroulante, naviguez jusqu'à la clé, sélectionnez-la et votre projet peut maintenant être construit.


J'ai eu un problème similaire, mais après avoir sélectionné le pfx dans un ComboBox "Strong key key file" et en tapant le mot de passe j'ai toujours eu une erreur similaire (sans la partie du nom du conteneur):

Impossible d'importer le fichier de clé suivant: companyname.pfx. Le fichier de clé peut être protégé par mot de passe. Pour corriger cela, essayez à nouveau d'importer le certificat ou installez manuellement le certificat

En outre, le panneau d'information de certificat "Sign the ClickOnce manifestes" n'a pas été rempli.

J'ai fait "Select from File ..." sur mon pfx, et cela a résolu le problème.


J'ai parlé trop tôt! La reconstruction a remis les erreurs en jeu ...

J'ai trouvé cela fonctionne - faites un clic droit dans l' Explorateur de solutions et excluez-le du projet. Cliquez sur Afficher tous les fichiers , faites un clic droit et incluez-le à nouveau dans le projet. Maintenant annuler les modifications en attente ...

Pour une raison ou une autre, cela m'a réglé et était relativement indolore!


J'ai resélectionné le fichier clé (pfx) dans la boîte déroulante "Choisissez un fichier de clés fort", puis le mot de passe fourni dans la fenêtre contextuelle "ENTRER MOT DE PASSE". J'ai sauvegardé mon projet et reconstruit.build a réussi.

  • Ouvrez les propriétés du projet.
  • Cliquez sur la section Signing.
  • Où il est dit «Choisissez un fichier de clé de nom fort:», resélectionnez la valeur actuelle dans la liste déroulante:

  • Visual Studio vous invite maintenant à entrer le mot de passe. Entrez-le.

  • Enregistrez votre projet et faites une reconstruction.

  • Si vous obtenez un message d'erreur: "Une tentative a été faite pour référencer un jeton qui n'existe pas" ignorez-le et continuez les étapes ci-dessous

  • Cliquez sur le bouton "Modifier le mot de passe":

  • Entrez le mot de passe d'origine dans les trois cases et cliquez sur OK. Si vous souhaitez changer votre mot de passe (ou si votre ancien mot de passe ne répond pas aux exigences de complexité), vous pouvez le faire maintenant.

  • Enregistrez votre projet et faites une reconstruction.

Plus d'informations..


J'ai trouvé que dans certains cas, vous devriez essayer de supprimer cette clé avant de l' installer. Alors faites ce qui suit:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

Pour contourner ce problème, j'ai essayé d'exécuter Visual Studio 2010 en tant qu'administrateur, et cela a fonctionné pour moi.

J'espère que ça aide.


Pour résoudre ce problème dans Visual Studio 2012, je fais un clic droit sur le projet, propriétés -> "signature", puis décochez la case "Signer les manifestes ClickOnce".



Toutes les méthodes décrites ici ne m'a pas aidé. Mais quand j'ai supprimé le fichier * .pfx de mon projet et que je l'ai ajouté à la signature de l'assemblée, j'ai construit mon projet sans erreur! Je ne peux pas expliquer les raisons pourquoi. Mais ça a marché pour moi.


Je courais aussi dans ce problème. J'ai été capable de résoudre le problème en courant
sn -i <KeyFile> <ContainerName> ( installe la paire de clés dans un conteneur nommé ).

sn est généralement installé dans le cadre d'un SDK Windows. Par exemple C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe . Très probablement cet emplacement n'est pas sur le chemin de recherche pour votre environnement standard. Toutefois, l'invite de commande de développeur installée par Visual Studio ajoute des informations supplémentaires qui incluent généralement l'emplacement correct.

Basé sur votre message qui ressemblerait à

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Cela doit être exécuté depuis l'emplacement de votre fichier PFX, si vous avez la solution chargée dans VS 2010, vous pouvez simplement cliquer avec le bouton droit sur le fichier pfx depuis l'explorateur de solution et choisissez Ouvrir l'invite de commande qui lancera l'outil. le bon répertoire.

Avant d'exécuter cette commande sn, j'ai réinstallé le pfx en cliquant dessus avec le bouton droit de la souris et en choisissant l'option d'installation, mais cela n'a pas fonctionné. Juste quelque chose à noter car il pourrait être la combinaison des deux qui a fourni la solution.

J'espère que cela aidera à résoudre votre problème.





pfx