Impossible d’importer le fichier de clés ‘blah.pfx’ – erreur ‘Le fichier de clés peut être protégé par un mot de passe’

Nous venons de mettre à niveau nos projets Visual Studio 2008 vers Visual Studio 2010. Tous nos assemblages étaient fortement signés à l’aide d’un certificate de signature de code Verisign . Depuis la mise à niveau, nous obtenons continuellement l’erreur suivante:

Impossible d’importer le fichier de clé suivant: companyname.pfx. Le fichier de clé peut être protégé par un mot de passe. Pour corriger cela, essayez à nouveau d’importer le certificate ou installez manuellement le certificate dans le CSP Strong Name avec le nom de conteneur de clé suivant: VS_KEY_3E185446540E7F7A

Cela se produit sur certaines machines de développement et pas sur d’autres. Voici quelques méthodes utilisées pour résoudre ce problème:

  • Réinstallation du fichier de clés à partir de Windows Explorer (cliquez avec le bouton droit sur le fichier PFX et cliquez sur Installer)
  • L’installation de Visual Studio 2010 sur un nouvel ordinateur pour la première fois vous demande le mot de passe la première fois que vous ouvrez le projet, puis il fonctionne. Sur les machines mises à niveau à partir de Visual Studio 2008, vous n’obtenez pas cette option.

J’ai essayé d’utiliser l’utilitaire SN.EXE (Strong Name Tool) pour enregistrer la clé avec le CSP Strong Name comme le suggère le message d’erreur, mais chaque fois que je lance l’outil avec des options utilisant la version fournie avec Visual Studio 2010, SN .EXE répertorie simplement ses arguments de ligne de commande au lieu de faire quoi que ce soit. Cela se produit indépendamment des arguments que je fournis.

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

    Je me suis heurté à ce problème aussi. J’ai pu résoudre le problème en exécutant
    sn -i ( installe la paire de clés dans un conteneur nommé ).

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

    Basé sur votre post 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 faire un clic droit sur le fichier pfx à partir de l’explorateur de solution et choisir Ouvrir l’invite de commande pour lancer le bon répertoire.

    Avant de lancer cette commande sn, j’ai réinstallé le fichier pfx en cliquant avec le bouton droit de la souris et en choisissant install mais cela ne fonctionnait pas. Juste quelque chose à noter car cela pourrait être la combinaison des deux qui a fourni la solution.

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

    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 entraîne la modification du fichier .pfx), sélectionnez à nouveau le fichier .pfx dans la liste déroulante. Cela appelle alors la boîte de dialog de mot de passe. Après avoir entré le mot de passe, le projet va construire correctement. Tout développeur peut le faire sur sa machine locale sans modifier le fichier .pfx.

    J’ai encore du mal à faire signer des assemblages sur notre machine serveur de build. Je reçois la même erreur là-bas, mais l’utilisation de la méthode sn.exe -i ne résout pas le problème pour le serveur de génération.

    J’ai eu le même problème et la suppression du magasin et la lecture n’ont pas fonctionné. Je devais faire ce qui suit.

    • Obtenez une copie de OpenSSL . Il est disponible pour Windows . Ou utilisez une boîte Linux car ils le sont tous.

    • Exécutez les opérations suivantes pour exporter vers un fichier de clés:

       openssl pkcs12 -in certfile.pfx -out backupcertfile.key openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key 

    Ensuite, dans les propriétés du projet, vous pouvez utiliser le fichier PFX.

    VSCommands 2010 (plug-in pour Visual Studio) peut résoudre ce problème automatiquement: faites un clic droit sur l’erreur et cliquez sur Apply Fix dans le menu. Vous pouvez l’ obtenir de la galerie Visual Studio .

    J’ai parlé trop tôt! Rebuild a ramené les erreurs en jeu …

    J’ai trouvé cela fonctionne – cliquez avec le bouton droit dans l’ Explorateur de solutions et excluez-le du projet. Cliquez sur Afficher tous les fichiers , cliquez avec le bouton droit et incluez-le à nouveau dans le projet. Maintenant, annulez les modifications en attente …

    Pour une raison quelconque, cela s’est passé pour moi et était relativement indolore!

    J’ai constaté que dans certains cas, vous devriez essayer de supprimer cette clé avant de l’ installer. Alors, procédez comme suit:

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

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

    Comportement

    Je comprends que «signe» applique un nom fort et non un code authentique à une DLL ou à un EXE. C’est pour cette raison que signtool fonctionnera dans ce cas, mais “sign” dans Visual studio ne fonctionnera pas.

    Raison

    Dans le passé, j’ai eu de l’expérience avec les certificates de Verisign. Ils ont un KeySpec=2 dans le certificate – qui est utilisé avec la fonctionnalité «sign» dans Visual Studio. Ces certificates fonctionnent correctement pour Visual Studio et l’outil Signtool.

    J’ai maintenant acheté des certificates de Comodo, qui ont un KeySpec=1 incorrect KeySpec=1 dans les certificates de signature de code. Cela signifie que ces certificates fonctionnent bien avec signtool (authenticode) mais pas avec des noms forts (liste déroulante des signes).

    Solution

    Il existe deux manières de résoudre ce problème:

    1. Créez un certificate distinct pour votre nom fort en utilisant sn -k [name].snk . Signez l’assembly à l’aide du snk et utilisez ensuite l’outil signtool avec votre certificate de signature de code pour signer le fichier DLL / EXE avec la signature authentique. Bien que cela semble étrange, d’après ce que je comprends, c’est une manière correcte de traiter les certificates, car les noms forts ont un objective différent de l’authentode (voir aussi ce lien pour plus de détails sur son fonctionnement).
    2. Importez votre certificate en tant que KeySpec=2 . La procédure à suivre est détaillée ici .

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


    Pour vous assurer que cette solution ne sera jamais perdue à l’avenir, voici la procédure de la solution 2:

    1. A l’aide de la “Certifiates”, la MMC exporte le jeu de KeySpec=1 existant ( KeySpec=1 ) dans un fichier PFX. Remarque: Veuillez sauvegarder ce fichier dans un emplacement sûr et vérifier si le fichier peut être importé correctement sur une autre machine si vous voulez vraiment le lire en toute sécurité!
    2. Supprimez le certificate existant du magasin de chiffrement (stlll utilisant le MMC).
    3. Ouvrez une invite CMD.
    4. Importez le fichier PFX en utilisant cette commande:
      1. certutil -importPFX -user AT_SIGNATURE
      2. Entrez la phrase secrète pour le fichier pfx lorsque vous y êtes invité.

    Vous devez maintenant avoir un jeu de clés / certificate avec KeySpec=2 . Si nécessaire, vous pouvez maintenant exporter cela dans un autre fichier PFX en utilisant à nouveau la MMC.

    Pour résoudre ce problème dans Visual Studio 2012, cliquez avec le bouton droit sur le projet, propriétés -> “Signer”, puis décochez la case “Signer les manifestes ClickOnce”.

    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.

    En tant qu’auteur original du travail sur le rapport de bogue de connexion, il existe 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 des noms forts) pour importer la clé dans le magasin de noms fort.

    L’autre variante pour laquelle vous utilisez certmgr à importer est lorsque vous créez des codes pour des éléments tels que le déploiement par clic (notez que vous pouvez utiliser le même certificate pour les deux objectives).

    J’espère que cela t’aides.

    Rien n’a fonctionné pour moi, mais je suis allé et j’ai regardé le gestionnaire de certificates (mmc.exe). Le certificate n’a pas été importé dans le magasin personnel, je l’ai donc importé manuellement et le projet a été compilé.

    Voir Signature du manifeste ClickOnce et signature de l’assembly de nom fort à l’aide de la page de signature du concepteur de projets Visual Studio, Assemblées de signature .

    J’ai resélectionné le fichier Key (pfx) dans la liste déroulante “Choisir un fichier de nom fort”, puis fourni le mot de passe dans la fenêtre contextuelle “ENTER PASSWORD”. Sauvegardé mon projet et reconssortingld.build a réussi.

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

    entrer la description de l'image ici

    • Visual Studio va maintenant vous demander le mot de passe. Entrez le

    entrer la description de l'image ici

    • Enregistrez votre projet et effectuez une reconstruction.

    • Si obtenir un message d’erreur: “Une tentative a été faite de référencer un jeton qui n’existe pas” ignorez-le simplement et continuez les étapes ci-dessous

    • Cliquez sur le bouton “Modifier le mot de passe”:

    entrer la description de l'image ici

    • Entrez le mot de passe d’origine dans les trois cases et cliquez sur OK. Si vous souhaitez modifier 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 effectuez une reconstruction.

    Plus d’informations..

    La resélection du fichier de clé dans une liste déroulante et la saisie du mot de passe nous aident.

    Mais il est nécessaire de le faire chaque fois que le fichier clé change et que cela semble ne pas être correct.

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

    Ma solution consistait à ouvrir le fichier de projet dans le Bloc – notes et à 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 pas voir les clés répertoriées dans la liste déroulante “Choisissez le fichier de clé de nom fort”. Dans la liste déroulante, accédez à la clé, sélectionnez-la et votre projet peut maintenant être créé.

    Mon problème était que le contrôleur de génération TFS s’exécutait en tant que service réseau et pour une raison quelconque, je ne comprenais pas pourquoi les certificates de service Visual Studio Build Host n’étaient pas utilisés. J’ai changé l’identité du service Visual Studio Build pour qu’il soit plus facile à gérer, il s’est assuré qu’il avait des droits sur le serveur TFS et a ajouté manuellement les certificates à l’aide de la console MMC.

    Le problème était également que MSBuild ne pouvait pas append les certificates protégés par mot de passe au magasin.

    Toutes les méthodes décrites ici ne m’ont pas aidé. Mais lorsque j’ai supprimé le fichier * .pfx de mon projet et l’a ajouté à la signature de l’assembly, j’ai construit mon projet sans aucune erreur! Je ne peux pas expliquer les raisons pour lesquelles. Mais cela a fonctionné pour moi.

    Ok, cela a fonctionné pour moi. Ouvrez l’ancienne solution / projet en tant qu’administrateur dans Visual Studio 2010 et ouvrez la nouvelle solution ou le projet copié. En tant qu’administrateur, supprimez le fichier pfk copié dans la nouvelle solution / projet Visual Studio 2010 et accédez aux propriétés du projet et désélectionnez-le.

    Avec les deux projets ouverts, copiez-les sur le nouveau. Accédez aux propriétés du projet et sélectionnez Générer. J’ai ouvert et fermé Visual Studio et, après l’avoir retiré du nouveau projet, l’ai copié avant de le copier de l’ancien projet et de le sélectionner. J’ai reçu l’erreur au début de ce post lorsque j’ai copié le projet et essayé de le construire.

    J’ai eu un problème similaire, mais après avoir sélectionné le fichier pfx dans un “ComboBox de fichier de clé de nom fort” et en tapant le mot de passe, j’ai toujours 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 un mot de passe. Pour corriger cela, essayez de réimporter le certificate ou installez manuellement le certificate

    En outre, le panneau d’informations sur les certificates “Signer les manifestes ClickOnce” n’a pas été renseigné.

    J’ai fait “Select from File …” sur mon pfx, et cela a résolu le problème.

    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é avec sn.exe .

    Après avoir changé le compte sur mon compte administrateur, tout fonctionne correctement.

    J’ai résolu ce problème pour moi-même en modifiant la ligne suivante dans le fichier .csproj du projet Visual Studio:

    Cela a jeté l’erreur ‘impossible d’importer’:

      true  

    En changeant la valeur en false, l’erreur disparut.

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

    Double-cliquez sur Package.appxmanifest

    Aller à l’onglet Emballage

    cliquez sur choisir le certificate

    cliquez sur configurer le certificate

    sélectionner dans un fichier et utiliser example.pfx cette unité ou tout autre élément créé

    FYI

    J’ai utilisé le sn.exe avec l’indicateur -p pour le fichier PFX de signature de code officiel (acheté en tant que signature de code), comme ci-dessous, pour créer le fichier SNK et dans Visual Studio 2013 pour être utilisé.

    • Qui a résolu le problème de mot de passe.

    Mais le problème est toujours qu’il continue à dire: “Le fichier de clé * .. SNK ne contient pas de paire de clés publique / privée.”

    entrer la description de l'image ici