Sn.exe (strumento Nome sicuro)Sn.exe (Strong Name Tool)

Lo strumento Nome sicuro (Sn.exe) consente di firmare assembly con nomi sicuri.The Strong Name tool (Sn.exe) helps sign assemblies with strong names. Lo strumento offre diverse opzioni per la gestione delle chiavi e la generazione e la verifica delle firme.Sn.exe provides options for key management, signature generation, and signature verification.

Avviso

Non usare i nomi sicuri per la sicurezza,Do not rely on strong names for security. poiché forniscono solo un'identità univoca.They provide a unique identity only.

Per altre informazioni sui nomi sicuri e sugli assembly con nomi sicuri, vedere Assembly con nomi sicuri e Procedura: Firmare un assembly con un nome sicuro.For more information on strong naming and strong-named assemblies, see Strong-Named Assemblies and How to: Sign an Assembly with a Strong Name.

Lo strumento Nome Sicuro viene installato automaticamente con Visual Studio.The Strong Name tool is automatically installed with Visual Studio. Per avviare lo strumento, usare il prompt dei comandi per lo sviluppatore (o il prompt dei comandi di Visual Studio in Windows 7).To start the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). Per altre informazioni, vedere Prompt dei comandi.For more information, see Command Prompts.

Nota

Nei computer a 64 bit, eseguire la versione a 32 bit di Sn.exe tramite il prompt dei comandi di Visual Studio e la versione a 64 bit tramite il prompt dei comandi di Visual Studio x64 Win64.On 64-bit computers, run the 32-bit version of Sn.exe by using the Visual Studio Command Prompt and the 64-bit version by using the Visual Studio x64 Win64 Command Prompt.

Al prompt dei comandi digitare quanto segue:At the command prompt, type the following:

SintassiSyntax

sn [-quiet][option [parameter(s)]]  

ParametriParameters

OpzioneOption DescrizioneDescription
-a fileCoppiaChiaviIdentità fileChiavePubblicaFirma-a identityKeyPairFile signaturePublicKeyFile Genera dati AssemblySignatureKeyAttribute per eseguire la migrazione della chiave di identità alla chiave di firma da un file.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a file.
-ac fileChiavePubblicaIdentità contenitoreCoppiaChiaviIdentità fileChiavePubblicaIdentità-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Genera dati AssemblySignatureKeyAttribute per eseguire la migrazione della chiave di identità alla chiave di firma da un contenitore di chiavi.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a key container.
-c [csp]-c [csp] Imposta il provider del servizio di crittografia (CSP) predefinito da usare per la firma con nome sicuro.Sets the default cryptographic service provider (CSP) to use for strong name signing. Questa impostazione ha effetto sull'intero computer.This setting applies to the entire computer. Se non si specifica alcun nome CSP, l'impostazione corrente viene cancellata.If you do not specify a CSP name, Sn.exe clears the current setting.
-d contenitore-d container Elimina dal CSP del nome sicuro il contenitore delle chiavi specificato.Deletes the specified key container from the strong name CSP.
-D assembly1 assembly2-D assembly1 assembly2 Verifica che due assembly differiscano solo nella firma.Verifies that two assemblies differ only by signature. Questa opzione è spesso usata come controllo dopo che un assembly è stato nuovamente firmato con una coppia di chiavi differente.This is often used as a check after an assembly has been re-signed with a different key pair.
-e assembly FileOut-e assembly outfile Estrae la chiave pubblica da assembly e la archivia in FileOut.Extracts the public key from assembly and stores it in outfile.
-h-h Visualizza la sintassi e le opzioni di comando dello strumento.Displays command syntax and options for the tool.
-i FileIn contenitore-i infile container Installa la coppia di chiavi da FileIn nel contenitore di chiavi specificato.Installs the key pair from infile in the specified key container. Il contenitore delle chiavi si trova nel CSP del nome sicuro.The key container resides in the strong name CSP.
-k [dimensionechiave] FileOut-k [keysize] outfile Genera una nuova chiave RSACryptoServiceProvider con la dimensione indicata e la scrive nel file specificato.Generates a new RSACryptoServiceProvider key of the specified size and writes it to the specified file. Nel file vengono scritte sia la chiave pubblica sia la chiave privata.Both a public and private key are written to the file.

Se non si specifica una dimensione per la chiave, verrà generata una chiave a 1024 bit se è installato Microsoft Enhanced Cryptographic Provider; in caso contrario, verrà generata una chiave a 512 bit.If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

Il parametro dimensionechiave supporta lunghezze di chiavi da 384 bit a 16384 bit ad incrementi di 8 bit, se è installato Microsoft Enhanced Cryptographic Provider.The keysize parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. Se è stato installato Microsoft Base Cryptographic Provider, supporta lunghezze di chiave da 384 a 512 bit per incrementi di 8 bit.It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.
-m [y | n]-m [y | n] Indica se i contenitori delle chiavi sono specifici del computer o dell'utente.Specifies whether key containers are computer-specific, or user-specific. Se si specifica y, i contenitori delle chiavi sono specifici del computer.If you specify y, key containers are computer-specific. Se si specifica n, i contenitori delle chiavi sono specifici dell'utente.If you specify n, key containers are user-specific.

Se non si specifica né y né n, questa opzione visualizzerà l'impostazione corrente.If neither y nor n is specified, this option displays the current setting.
-o FileIn [FileOut]-o infile [outfile] Estrae la chiave pubblica da FileIn e la archivia in un file CSV.Extracts the public key from the infile and stores it in a .csv file. I byte della chiave pubblica sono separati da virgole.A comma separates each byte of the public key. Questo formato è utile per gestire i riferimenti hardcoded alle chiavi sotto forma di matrici inizializzate nel codice sorgente.This format is useful for hard-coding references to keys as initialized arrays in source code. Se non si specifica un FileOut, questa opzione inserirà l'output negli Appunti.If you do not specify an outfile, this option places the output on the Clipboard. Nota: questa opzione non verifica se l'input è solo una chiave pubblica.Note: This option does not verify that the input is only a public key. Se in infile è contenuta una coppia di chiavi con una chiave privata, verrà estratta anche la chiave privata.If the infile contains a key pair with a private key, the private key is also extracted.
-p FileIn FileOut [algoritmohash]-p infile outfile [hashalg] Estrae la chiave pubblica dalla coppia di chiavi in FileIn e la archivia in FileOut, eventualmente usando l'algoritmo RSA specificato da algoritmohash.Extracts the public key from the key pair in infile and stores it in outfile, optionally using the RSA algorithm specified by hashalg. È possibile usare questa chiave pubblica per ritardare la firma di un assembly tramite le opzioni /delaysign+ e /keyfile di Assembly Linker (Al.exe).This public key can be used to delay-sign an assembly using the /delaysign+ and /keyfile options of the Assembly Linker (Al.exe). Quando per un assembly è impostata la firma ritardata, in fase di compilazione viene impostata solo la chiave pubblica e nel file viene riservato spazio per la firma che verrà aggiunta in un secondo momento, quando sarà nota la chiave privata.When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.
-pc contenitore FileOut [algoritmohash]-pc container outfile [hashalg] Estrae la chiave pubblica dalla coppia di chiavi in contenitore e la archivia in FileOut.Extracts the public key from the key pair in container and stores it in outfile. Se si usa l'opzione algoritmohash, viene usato l'algoritmo RSA per estrarre la chiave pubblica.If you use the hashalg option, the RSA algorithm is used to extract the public key.
-Pb [y | n]-Pb [y | n] Specifica se sono applicati i criteri per ignorare i nomi sicuri.Specifies whether the strong-name bypass policy is enforced. Se si specifica y, i nomi sicuri per gli assembly con attendibilità totale non vengono convalidati se caricati in AppDomain con attendibilità totale.If you specify y, strong names for full-trust assemblies are not validated when loaded into a full-trust AppDomain. Se si specifica n, i nomi sicuri vengono convalidati per verificare se sono corretti, ma non per individuare un nome sicuro specifico.If you specify n, strong names are validated for correctness, but not for a specific strong name. StrongNameIdentityPermission non ha effetto sugli assembly con attendibilità totale.The StrongNameIdentityPermission has no effect on full-trust assemblies. È necessario eseguire un controllo manuale per rilevare una corrispondenza di nomi sicuri.You must perform your own check for a strong name match.

Se non si specifica né yn, questa opzione visualizzerà l'impostazione corrente.If neither y nor n is specified, this option displays the current setting. Il valore predefinito è y.The default is y. Nota: nei computer a 64 bit è necessario impostare questo parametro nelle istanze di Sn.exe a 32 bit e a 64 bit.Note: On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.
-q[uiet]-q[uiet] Specifica la modalità non interattiva. Evita la visualizzazione dei messaggi di esito positivo.Specifies quiet mode; suppresses the display of success messages.
-R[a] assembly FileIn-R[a] assembly infile Firma nuovamente un assembly firmato in precedenza o con firma ritardata con la coppia di chiavi presente in FileIn.Re-signs a previously signed or delay-signed assembly with the key pair in infile.

Se si usa -Ra, vengono ricalcolati gli hash per tutti i file nell'assembly.If -Ra is used, hashes are recomputed for all files in the assembly.
-Rc[a] assembly contenitore-Rc[a] assembly container Firma nuovamente un assembly firmato in precedenza o con firma ritardata con la coppia di chiavi presente in contenitore.Re-signs a previously signed or delay-signed assembly with the key pair in container.

Se si usa -Rca, vengono ricalcolati gli hash per tutti i file nell'assembly.If -Rca is used, hashes are recomputed for all files in the assembly.
-Rh assembly-Rh assembly Ricalcola gli hash per tutti i file dell'assembly.Recomputes hashes for all files in the assembly.
-t[p] FileIn-t[p] infile Visualizza il token per la chiave pubblica archiviata in FileIn.Displays the token for the public key stored in infile. Il contenuto di FileIn deve includere una chiave pubblica generata in precedenza da un file di coppia di chiavi tramite -p.The contents of infile must be a public key previously generated from a key pair file using -p. Non usare l'opzione -t[p] per estrarre il token direttamente dal file di coppia di chiavi.Do not use the -t[p] option to extract the token directly from a key pair file.

Sn.exe calcola il token usando una funzione hash tratta dalla chiave pubblica.Sn.exe computes the token by using a hash function from the public key. Per risparmiare spazio, Common Language Runtime archivia i token di chiave pubblica nel manifesto come parte di un riferimento a un altro assembly quando registra una dipendenza in un assembly con nome sicuro.To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. Oltre al token, l'opzione -tp visualizza anche la chiave pubblica.The -tp option displays the public key in addition to the token. Se all'assembly è stato applicato l'attributo AssemblySignatureKeyAttribute, il token è per la chiave di identità e viene visualizzato il nome dell'algoritmo hash e della chiave di identità.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Questa opzione non verifica la firma dell'assembly e non deve essere usata per prendere decisioni sull'attendibilità.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Serve solo a visualizzare i dati non elaborati del token della chiave pubblica.This option only displays the raw public key token data.
-T[p] assembly-T[p] assembly Visualizza il token della chiave pubblica per assembly.Displays the public key token for assembly. assembly deve corrispondere al nome di un file che contiene un manifesto dell'assembly.The assembly must be the name of a file that contains an assembly manifest.

Sn.exe calcola il token usando una funzione hash tratta dalla chiave pubblica.Sn.exe computes the token by using a hash function from the public key. Per risparmiare spazio, il runtime archivia i token di chiave pubblica nel manifesto come parte di un riferimento a un altro assembly quando registra una dipendenza in un assembly con nome sicuro.To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. Oltre al token, l'opzione -Tp visualizza anche la chiave pubblica.The -Tp option displays the public key in addition to the token. Se all'assembly è stato applicato l'attributo AssemblySignatureKeyAttribute, il token è per la chiave di identità e viene visualizzato il nome dell'algoritmo hash e della chiave di identità.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Questa opzione non verifica la firma dell'assembly e non deve essere usata per prendere decisioni sull'attendibilità.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Serve solo a visualizzare i dati non elaborati del token della chiave pubblica.This option only displays the raw public key token data.
-TS assembly infile-TS assembly infile Applica la firma di test all'assembly firmato o parzialmente firmato con la coppia di chiavi presente in infile.Test-signs the signed or partially signed assembly with the key pair in infile.
-TSc``assembly``container Applica la firma di test all'assembly firmato o parzialmente firmato con la coppia di chiavi presente nel contenitore di chiavi container.Test-signs the signed or partially signed assembly with the key pair in the key container container.
-v assembly-v assembly Verifica il nome sicuro in assembly, dove assembly è il nome di un file che contiene un manifesto dell'assembly.Verifies the strong name in assembly, where assembly is the name of a file that contains an assembly manifest.
-vf assembly-vf assembly Verifica il nome sicuro in assembly.Verifies the strong name in assembly. A differenza dall'opzione -v, -vf forza la verifica, anche se questa è stata disabilitata tramite l'opzione -Vr.Unlike the -v option, -vf forces verification even if it is disabled using the -Vr option.
-Vk regfile.reg assembly [elencoutenti] [FileIn]-Vk regfile.reg assembly [userlist] [infile] Crea un file con voci di registrazione (.reg) che è possibile usare per registrare l'assembly specificato e poter saltare la verifica.Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. Le regole di denominazione dell'assembly che si applicano all'opzione -Vr si applicano anche a –Vk.The rules for assembly naming that apply to the -Vr option apply to –Vk as well. Per informazioni sulle opzioni elencoutenti e FileIn, vedere l'opzione –Vr.For information about the userlist and infile options, see the –Vr option.
-Vl-Vl Elenca le impostazioni correnti per la verifica del nome sicuro nel computer.Lists current settings for strong-name verification on this computer.
-Vr assembly [elencoutenti] [FileIn]-Vr assembly [userlist] [infile] Registra assembly per evitare la verifica.Registers assembly for verification skipping. Facoltativamente, è possibile specificare un elenco delimitato da virgole di nomi utente a cui applicare il salto della verifica.Optionally, you can specify a comma-separated list of user names the skip verification should apply to. Se si specifica FileIn, la verifica resta abilitata, ma nelle operazioni di verifica verrà usata la chiave pubblica contenuta in FileIn.If you specify infile, verification remains enabled, but the public key in infile is used in verification operations. È possibile specificare assembly nel formato *, nomesicuro per registrare tutti gli assembly con il nome sicuro specificato.You can specify assembly in the form *, strongname to register all assemblies with the specified strong name. Per nomesicuro, specificare la stringa di cifre esadecimali che rappresenta la chiave pubblica in formato token.For strongname, specify the string of hexadecimal digits representing the tokenized form of the public key. Vedere le opzioni -t e -T per visualizzare il token della chiave pubblica.See the -t and -T options to display the public key token. Attenzione: usare questa opzioni solo durante lo sviluppo.Caution: Use this option only during development. L'aggiunta di un assembly all'elenco di omissione della verifica rende vulnerabile il sistema di sicurezza.Adding an assembly to the skip verification list creates a security vulnerability. Un assembly dannoso potrebbe usare il nome completamente specificato (nome assembly, versione, impostazioni cultura e token della chiave pubblica) dell'assembly aggiunto all'elenco di omissione della verifica per camuffare la propria identità.A malicious assembly could use the fully specified assembly name (assembly name, version, culture, and public key token) of the assembly added to the skip verification list to fake its identity. La verifica verrebbe omessa quindi anche per l'assembly dannoso.This would allow the malicious assembly to also skip verification.
-Vu assembly-Vu assembly Annulla la registrazione di assembly per evitare la verifica.Unregisters assembly for verification skipping. Le regole per la denominazione delle assembly applicate a -Vr vengono anche applicate a -Vu.The same rules for assembly naming that apply to -Vr apply to -Vu.
-Vx-Vx Rimuove tutte le voci di salto della verifica.Removes all verification-skipping entries.
-?-? Visualizza la sintassi e le opzioni di comando dello strumento.Displays command syntax and options for the tool.

Nota

Per essere valide, le opzioni di Sn.exe devono essere digitate esattamente come indicato, rispettando con precisione la combinazione di maiuscole e minuscole.All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool.

NoteRemarks

Le opzioni -R e –Rc sono utili con gli assembly per cui è stata impostata la firma ritardata.The -R and –Rc options are useful with assemblies that have been delay-signed. In questo scenario solo la chiave pubblica viene impostata in fase di compilazione e la firma viene apposta in un secondo tempo, quando sarà nota la chiave privata.In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known.

Nota

Per i parametri come –Vr che scrivono in risorse protette, ad esempio il Registro di sistema, eseguire SN.exe come amministratore.For parameters (for example, –Vr) that write to protected resources such as the registry, run SN.exe as an administrator.

EsempiExamples

Il comando che segue crea una nuova coppia casuale di chiavi e la archivia in keyPair.snk.The following command creates a new, random key pair and stores it in keyPair.snk.

sn -k keyPair.snk  

Il comando che segue archivia la chiave presente in keyPair.snk all'interno del contenitore MyContainer nel CSP del nome sicuro.The following command stores the key in keyPair.snk in the container MyContainer in the strong name CSP.

sn -i keyPair.snk MyContainer  

Il comando che segue estrae la chiave pubblica da keyPair.snk e la archivia in publicKey.snk.The following command extracts the public key from keyPair.snk and stores it in publicKey.snk.

sn -p keyPair.snk publicKey.snk  

Il comando che segue visualizza la chiave pubblica e il token per la chiave pubblica contenuti in publicKey.snk.The following command displays the public key and the token for the public key contained in publicKey.snk.

sn -tp publicKey.snk  

Il comando che segue verifica l'assembly MyAsm.dll.The following command verifies the assembly MyAsm.dll.

sn -v MyAsm.dll  

Il comando che segue elimina MyContainer dal CSP predefinito.The following command deletes MyContainer from the default CSP.

sn -d MyContainer  

Vedere ancheSee Also

StrumentiTools
Al.exe (Assembly Linker)Al.exe (Assembly Linker)
Assembly con nomi sicuriStrong-Named Assemblies
Prompt dei comandiCommand Prompts