"Impossible de trouver le certificat de signature du manifeste dans le magasin de certificats" - même lors de l'ajout d'une nouvelle clé

154

Je ne peux pas créer de projets avec une signature de clé de nom forte - le message dans le titre revient toujours.

Oui, le projet a été initialement copié à partir d'une autre machine. Cependant, même si j'ajoute une nouvelle clé via l'onglet Signature dans les propriétés du projet, cette erreur est toujours affichée.

J'ai essayé d'exécuter Visual Studio en tant qu'administrateur et j'ai essayé d'ajouter manuellement les clés au magasin de certificats Windows.

Aidez-moi!

Edit: Je n'obtiens pas cette erreur avec un nouveau projet, mais j'aimerais bien que ce projet existant fonctionne. Cela ne fonctionnera pas même si je crée un nouveau certificat!

Marcus
la source
3
Quel type de projet VS? Avez-vous également décoché la case "Signer les manifestes ClickOnce" dans l'onglet Signature des propriétés du projet?
Simon Mourier
@Simon Mourier, si je décoche cette option, le fichier ne sera pas signé. Je veux qu'il soit signé! C'est un projet C #. Fonctionne bien sur ma principale machine de développement, mais pas sur l'ordinateur portable.
Marcus
Le message d'erreur est-il affiché dans votre journal de construction ou d'une autre manière? Cela peut aider si vous copiez et collez le journal.
Owen Wengerd
Une erreur dans le journal de construction: «Impossible de trouver le certificat de signature du manifeste dans le magasin de certificats»
Marcus
Je n'ai pas vu les lignes de code dans la réponse acceptée. Mais cela a fonctionné pour moi: j'ai créé une nouvelle clé dans VS2015. J'ai décoché Signer l'Assemblée et sauvé. Ensuite, j'ai cliqué sur le bouton Sélectionner à partir du fichier, choisi le fichier que je venais de créer, cliqué à nouveau sur Signer l'assemblage et enregistré. Reconstruit.
Tim

Réponses:

234

J'ai enfin trouvé la solution et j'espère vraiment que cela aidera quelqu'un d'autre aussi.

  1. Modifiez le .csprojfichier du projet en question.
  2. Supprimez les lignes de code suivantes:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Marcus
la source
1
A travaillé pour moi aussi. Des mises en garde contre une telle action?
Doctor Coder
1
Oui, tout supprimé avec "Manifest" et cela a fonctionné :-)
s1cart3r
2
Je ne ferais pas ça sans connaître les répercussions ... fais-le quand même
barnacle.m
Dans mon cas, supprimer ManifestCertificateThumbprintet ManifestKeyFilerésoudre le problème.
Ahmed Shamel
A travaillé pour moi. Je n'ai aucune idée des répercussions que cela a, mais au moins l'un d'entre eux est un projet de travail, donc cela me suffit.
Parrotmaster
149

Accédez aux "Propriétés" de votre projet dans Visual Studio. Ensuite, allez dans l'onglet signature.

Assurez-vous ensuite que Sign the Click Once manifestest est désactivé.


Instructions mises à jour:

Dans votre explorateur de solutions:

  1. clic droit sur votre projet
  2. cliquez sur les propriétés
  3. généralement sur le côté gauche, sélectionnez l'onglet "Signature"
  4. cochez les manifestes Sign the ClickOnce
  5. Assurez-vous d'économiser!

entrez la description de l'image ici

ADL
la source
2
Ce que vous avez dit est bien et devrait fonctionner, mais ne l'a pas fait. En fin de compte, j'ai dû supprimer les lignes de code comme mentionné dans la réponse ci
Hamid Shahid
1
Qu'est-ce que cela signifie / que signifie cette action?
LazerSharks
@TrailMix Cela modifiera votre fichier de configuration de manière appropriée.
ADL
1
cela m'a donné une solution pour vs2010 :) up!
jace
1
Bonne réponse! J'utilise VS2012 et ça marche vraiment! +1
kiLLua
15

C'est simple!!

J'ai résolu ce problème en suivant ces étapes:

  1. Ouvrir les propriétés du projet img
  2. Cliquez sur l'onglet Signature
  3. Et décochez "Signer l'assemblage"

C'est tout!!

Amit Kadam
la source
13
  1. Ouvrez le fichier .csproj dans le Bloc-notes.
  2. Supprimez les informations suivantes relatives à la signature du certificat dans le magasin de certificats

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Rajamohan Rajendran
la source
11

Essayez ceci: Faites un clic droit sur votre projet -> Allez dans les propriétés -> Cliquez sur la signature qui se trouve sur le côté gauche de l'écran -> Décochez la case Signer le clic une fois manifestes -> Enregistrer et construire

Kamala Hanchinal
la source
6

Accédez à vos projets "Propriétés" dans Visual Studio. Ensuite, allez dans l'onglet signature.

Assurez-vous ensuite que Sign the Click Once manifestest est désactivé.

OU

1.Ouvrez le fichier .csproj dans le Bloc-notes.

2.Supprimez les informations suivantes relatives à la signature du certificat dans le magasin de certificats xxxxx xxxxxx xxxxxxxx.pfx true false `

A travaillé pour moi.

Cendre
la source
3

En supposant qu'il s'agit d'un certificat personnel créé par Windows sur le système à partir duquel vous avez copié votre projet, vous pouvez utiliser le gestionnaire de certificats sur le système où se trouve actuellement le projet et importer le certificat. Démarrez le gestionnaire de certificats (certmgr) et sélectionnez les certificats personnels puis cliquez avec le bouton droit de la souris sous la liste des certificats existants et sélectionnez importer dans les tâches. Utilisez la navigation pour trouver le .pfx dans le projet (le .pfx du système précédent que vous avez copié avec le projet). Il doit se trouver dans le sous-répertoire portant le même nom que le répertoire du projet. Je connais C # et VS, donc si ce n'est pas votre environnement, peut-être que le .pfx sera ailleurs ou peut-être que cette suggestion ne s'applique pas. Après l'importation, vous devriez recevoir un message d'état. Si vous réussissez, l'erreur de certificat de compilation devrait avoir disparu.écran certmgr

dpminusa
la source
Clair et concis!
Guido Leenders
0

Il ne suffit pas d'ajouter manuellement des clés au magasin de certificats Windows. Le certificat contient uniquement la clé publique signée. Vous devez également importer la clé privée associée à la clé publique dans le certificat. Un fichier .pfx contient les clés publiques et privées dans un seul fichier. C'est ce que vous devez importer.

Owen Wengerd
la source
Merci mais déjà essayé. Visual Studio doit quand même ajouter automatiquement le certificat lorsque vous en créez un nouveau. Cependant, j'ai également essayé d'ajouter le fichier .pfx manuellement. Windows gauche pour l'installer dans le bon magasin de certificats et l'a également ajouté à mon magasin personnel.
Marcus
La clé privée n'est pas stockée dans le magasin de certificats. Veuillez lire ceci, cela vous aidera peut-être à comprendre la distinction: technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd
Je dois ajouter que vous pouvez vérifier que la clé privée associée est disponible en ouvrant la fenêtre de propriété du certificat dans le gestionnaire de certificats. Si la clé privée est disponible, le texte suivant s'affiche en bas de la page Général: "Vous disposez d'une clé privée correspondant à ce certificat". Si vous ne voyez pas ce texte, la clé privée n'est pas installée.
Owen Wengerd
Oui, il dit "Vous avez une clé privée qui correspond à ce certificat".
Marcus
Je pense que cela exclut la clé ou le certificat comme problème.
Owen Wengerd
0

Vous avez dit que vous avez copié des fichiers depuis un autre ordinateur. Après les avoir copiés, les avez-vous «débloqués»? Plus précisément, le fichier .snk doit être vérifié pour s'assurer qu'il n'est pas marqué comme dangereux.

Owen Wengerd
la source
Il n'est pas bloqué, il provient du logiciel de synchronisation Windows Live Mesh. Cependant, ce n'est pas pertinent car même la création d'une nouvelle clé dans Visual Studio sur l'ordinateur portable ne fonctionnera pas.
Marcus
0

Pour signer un assembly avec un nom fort à l'aide d'attributs

Ouvert AssemblyInfo.cs(en $(SolutionDir)\Properties)

le AssemblyKeyFileAttributeou leAssemblyKeyNameAttribute , en spécifiant le nom du fichier ou du conteneur qui contient la paire de clés à utiliser lors de la signature de l'assembly avec un nom fort.

ajoutez le code suivant:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
QuangNHb
la source
L'ajout de cette ligne ne fait aucune différence, j'obtiens toujours la même erreur.
Marcus
0

Si vous avez juste besoin de créer le projet ou la solution localement, la suppression de la signature peut être une solution très simple, comme d'autres le suggèrent.

Mais si vous rencontrez cette erreur sur votre serveur de construction d'automatisation comme TeamCity où vous créez vos pièces de version réelles pour le déploiement ou la distribution, vous voudrez peut-être réfléchir à la façon dont vous pouvez obtenir ce certificat correctement installé dans le magasin de certificats sur la machine de construction, afin d'obtenir un paquet signé à la fin de la construction.

En général, il n'est pas recommencé à enregistrer / valider des certificats PFX dans le contrôle de code source, donc comment obtenir ces fichiers sur votre serveur de construction pendant le processus de construction est un peu une autre question, mais parfois les gens ont ce fichier stocké avec la solution code afin que vous puissiez le trouver dans le dossier du projet.

Tout ce que vous avez à faire est simplement d'installer ce certificat sous le compte approprié sur votre serveur de build.

  1. Téléchargez PsExec à partir de Windows Sysinternals .

  2. Ouvrez une invite de commande et entrez ce qui suit. Il engendrera une nouvelle invite de commande, exécutée en tant que système local (en supposant que votre TeamCity fonctionne sous le compte système local par défaut):

    > psexec.exe -i -s cmd.exe

  3. Dans cette nouvelle invite de commande, accédez au répertoire contenant le certificat et entrez le nom du fichier à installer (remplacez le nom du fichier par le vôtre):

    > mykey.pfx

  4. L'assistant d'importation de certificat démarre. Cliquez sur et sélectionnez toutes les valeurs par défaut suggérées.

  5. Exécutez la compilation.

Tous les crédits vont à Stuart Noble (et ensuite à Laurent Kempé je crois ☺).

Sevenate
la source