Gestion d'assembly et signature de manifesteManaging Assembly and Manifest Signing

La signature avec un nom fort fournit à un composant logiciel une identité globalement unique.Strong-name signing gives a software component a globally unique identity. L’utilisation de noms forts garantit que l’assembly ne peut pas être usurpé et que les dépendances de composants et les instructions de configuration correspondent aux composant et version de composant appropriés.Strong names are used to guarantee that the assembly cannot be spoofed by someone else, and to ensure that component dependencies and configuration statements map to the correct component and component version.

Un nom fort est constitué de l’identité de l’assembly (simple nom textuel, numéro de version et informations de culture), ainsi que d’un jeton de clé publique et d’une signature numérique.A strong name consists of the assembly's identity (simple text name, version number, and culture information), plus a public key token and a digital signature.

Pour plus d’informations sur la signature d’assemblys dans les projets Visual Basic et C#, consultez Création et utilisation d’assemblys avec nom fort.For information about signing assemblies in Visual Basic and C# projects, see Creating and Using Strong-Named Assemblies.

Pour plus d’informations sur la signature d’assemblys dans les projets Visual C++, consultez Assemblys de nom fort (signature d’assembly) (C++/CLI).For information about signing assemblies in Visual C++ projects, see Strong Name Assemblies (Assembly Signing) (C++/CLI).

Note

La signature avec nom fort ne protège pas l’assembly contre l’ingénierie à rebours.Strong-name signing does not protect against reverse-engineering of the assembly. Pour protéger contre l’ingénierie à rebours, consultez Dotfuscator Community Edition (CE).To protect against reverse-engineering, see Dotfuscator Community Edition (CE).

Types de composants et signatureAsset Types and Signing

Vous pouvez signer les manifestes d’application et les assemblys .NET.You can sign .NET assemblies and application manifests. Notamment :These include the following:

  • Exécutables (.exe)executables (.exe)

  • Manifestes d’application (.exe.manifest)application manifests (.exe.manifest)

  • Manifestes de déploiement (.application)deployment manifests (.application)

  • Assemblys de composants partagés (.dll)shared component assemblies (.dll)

Vous devez signer les types de composants suivants :You must sign the following types of asset:

  1. Assemblys, si vous souhaitez les déployer dans le Global Assembly Cache (GAC).Assemblies, if you want to deploy them to the global assembly cache (GAC).

  2. Manifestes d’application et de déploiement ClickOnceClickOnce.ClickOnceClickOnce application and deployment manifests. Visual Studio permet la signature par défaut pour ces applications.Visual Studio enables signing by default for these applications.

  3. Assemblys PIA (Primary Interop Assembly), qui sont utilisés pour l’interopérabilité COM.Primary interop assemblies, which are used for COM interoperability. L’utilitaire TLBIMP applique des noms forts pendant la création d’un assembly PIA à partir d’une bibliothèque de types COM.The TLBIMP utility enforces strong-naming when creating a primary interop assembly from a COM type library.

En général, vous ne devez pas signer les exécutables.In general you should not sign executables. Un composant de nom fort ne peut pas référencer un composant sans nom fort qui est déployé avec l’application.A strongly-named component cannot reference a non-strongly-named component that is deployed with the application. Visual Studio ne signe pas les exécutables d’application. En revanche, il signe le manifeste d’application, qui pointe vers l’exécutable portant un nom faible.Visual Studio does not sign application executables, but instead signs the application manifest, which points to the weak-named executable. Vous devez généralement éviter de signer les composants qui appartiennent à votre application, car la signature peut rendre les dépendances plus difficiles à gérer.You should generally avoid signing components that are private to your application, because signing can make it more difficult to manage dependencies.

Comment signer un assembly dans Visual StudioHow to Sign an Assembly in Visual Studio

Vous signez une application ou un composant à l’aide de l’onglet Signature de la fenêtre des propriétés du projet (cliquez avec le bouton droit sur le nœud de projet dans l’Explorateur de solutions et sélectionnez Propriétés ou tapez propriétés de projet dans la fenêtre Lancement rapide, ou appuyez sur Alt+Entrée dans la fenêtre de l’Explorateur de solutions).You sign an application or component by using the Signing tab of the project properties window (right-click the project node in the Solution Explorer and select Properties, or type project properties in the Quick Launch window, or press ALT+ ENTER inside the Solution Explorer window). Sélectionnez l’onglet Signature, puis cochez la case Signer l’assembly.Select the Signing tab, then select the Sign the assembly check box.

Spécifiez un fichier de clé.Specify a key file. Si vous choisissez de créer un fichier de clé, notez que les fichiers de clés sont toujours créés au format .pfx.If you choose to create a new key file, note that new key files are always created in the .pfx format. Vous avez besoin d’un nom et d’un mot de passe pour le nouveau fichier.You need a name and password for the new file.

Avertissement

Vous devez toujours protéger votre fichier de clé avec un mot de passe pour empêcher son utilisation par un tiers.You should always protect your key file with a password to prevent someone else from using it. Vous pouvez également sécuriser vos clés à l’aide des fournisseurs ou des magasins de certificats.You can also secure your keys by using providers or certificate stores.

Vous pouvez également pointer vers une clé que vous avez déjà créée.You can also point to a key you have already created. Pour plus d’informations sur la création de clés, consultez Comment : créer une paire de clés publique/privée.For more information about creating keys, see How to: Create a Public-Private Key Pair.

Si vous avez accès uniquement à une clé publique, vous pouvez utiliser la signature différée pour reporter l’assignation de la clé.If you have access only to a public key, you can use delay signing to defer assigning the key. Vous activez la signature différée en cochant la case Différer la signature uniquement.You enable delay signing by selecting the Delay sign only check box. Un projet à signature différée ne s’exécute pas, et vous ne pouvez pas le déboguer.A delay-signed project won't run, and you can't debug it. Toutefois, vous pouvez ignorer la vérification pendant le développement à l’aide de l’option -Vr de l’outil Strong Name Tool (Sn.exe).However, you can skip verification during development by using the Sn.exe (Strong Name Tool) with the -Vr option.

Pour plus d’informations sur la signature des manifestes, consultez Guide pratique pour signer des manifestes d’application et de déploiement.For information about signing manifests, see How to: Sign Application and Deployment Manifests.

Voir aussiSee Also

Assemblys avec nom fort Strong-Named Assemblies
Assemblys de nom fort (signature d’assembly) (C++/CLI)Strong Name Assemblies (Assembly Signing) (C++/CLI)