Procedura: Creare una coppia di chiavi pubblica/privataHow to: Create a Public-Private Key Pair

Per firmare un assembly con un nome sicuro, è necessario disporre di una coppia di chiavi pubblica/privata.To sign an assembly with a strong name, you must have a public/private key pair. Questa coppia di chiavi crittografiche, pubblica e privata, viene usata durante la compilazione per creare un assembly con nome sicuro.This public and private cryptographic key pair is used during compilation to create a strong-named assembly. È possibile creare una coppia di chiavi usando lo strumento Nome sicuro (Sn.exe).You can create a key pair using the Strong Name tool (Sn.exe). Ai file delle coppie di chiavi è in genere associata l'estensione snk.Key pair files usually have an .snk extension.

Nota

In Visual Studio le pagine delle proprietà del progetto C# e Visual Basic includono una scheda Firma, che consente di selezionare i file di chiave esistenti o di generarne di nuovi senza usare Sn.exe.In Visual Studio, the C# and Visual Basic project property pages include a Signing tab that enables you to select existing key files or to generate new key files without using Sn.exe. In Visual C++ è possibile specificare il percorso di un file di chiave esistente nella pagina delle proprietà Avanzate nella sezione Linker della sezione Proprietà di configurazione della finestra Pagine delle proprietà.In Visual C++, you can specify the location of an existing key file in the Advanced property page in the Linker section of the Configuration Properties section of the Property Pages window. L'uso dell'attributo AssemblyKeyFileAttribute per l'identificazione delle coppie di file di chiave è diventato obsoleto a partire da Visual Studio 2005Visual Studio 2005.The use of the AssemblyKeyFileAttribute attribute to identify key file pairs has been made obsolete beginning with Visual Studio 2005Visual Studio 2005.

Per creare una coppia di chiaviTo create a key pair

  1. Al prompt dei comandi digitare il seguente comando:At the command prompt, type the following command:

    sn –k <nome file>sn –k <file name>

    In questo comando nome file corrisponde al nome del file di output contenente la coppia di chiavi.In this command, file name is the name of the output file containing the key pair.

L'esempio seguente consente di creare una coppia di chiavi denominata sgKey.snk.The following example creates a key pair called sgKey.snk.

sn -k sgKey.snk  

Se si desidera ritardare la firma di un assembly e si controlla l'intera coppia di chiavi (situazione improbabile al di fuori degli scenari di testing), è possibile usare i comandi seguenti per generare una coppia di chiavi e quindi estrarre da tale coppia la chiave pubblica, che viene salvata in un file distinto.If you intend to delay sign an assembly and you control the whole key pair (which is unlikely outside test scenarios), you can use the following commands to generate a key pair and then extract the public key from it into a separate file. Creare innanzitutto la coppia di chiavi:First, create the key pair:

sn -k keypair.snk  

Estrarre quindi la chiave pubblica dalla coppia di chiavi e copiarla in un file distinto:Next, extract the public key from the key pair and copy it to a separate file:

sn -p keypair.snk public.snk  

Dopo avere creato la coppia di chiavi, è necessario salvare il file in una posizione accessibile agli strumenti di firma con nome sicuro.Once you create the key pair, you must put the file where the strong name signing tools can find it.

Quando firma un assembly con un nome sicuro, Assembly Linker (Al.exe) cerca il file della chiave relativo alla directory corrente e alla directory di output.When signing an assembly with a strong name, the Assembly Linker (Al.exe) looks for the key file relative to the current directory and to the output directory. Se si utilizzano i compilatori della riga di comando, è sufficiente copiare la chiave nella directory corrente contenente i moduli di codice.When using command-line compilers, you can simply copy the key to the current directory containing your code modules.

Se si usa una versione precedente di Visual Studio in cui non è disponibile una scheda Firma nelle proprietà del progetto, il percorso del file di chiave consigliato è la directory del progetto con l'attributo di file specificato come segue:If you are using an earlier version of Visual Studio that does not have a Signing tab in the project properties, the recommended key file location is the project directory with the file attribute specified as follows:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

Vedere ancheSee Also

Creazione e utilizzo degli assembly con nome sicuroCreating and Using Strong-Named Assemblies