Sn.exe (strumento Nome sicuro)
Lo strumento Nome sicuro (Sn.exe) consente di firmare assembly con nomi sicuri. In Sn.exe sono disponibili opzioni per la gestione delle chiavi e la generazione e la verifica di firme.
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 utilizzando il prompt dei comandi di Visual Studio x64 Win64. |
Questo strumento viene installato automaticamente con Visual Studio e con Windows SDK. Per eseguire lo strumento, si consiglia di utilizzare il prompt dei comandi di Visual Studio o il prompt dei comandi di Windows SDK (shell di CMD). Queste utilità consentono di eseguire facilmente lo strumento, senza dover passare alla cartella di installazione. Per ulteriori informazioni, vedere Prompt dei comandi di Visual Studio e Windows SDK.
Se si dispone di Visual Studio installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic su Visual Studio, fare clic su Visual Studio Tools e quindi su Visual Studio Command Prompt.
In alternativa
Se si dispone di Windows SDK installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic sulla cartella di Windows SDK e quindi su Command Prompt (o CMD Shell).
Al prompt dei comandi digitare quanto segue:
sn [-quiet][option [parameter(s)]]
Parametri
Opzione |
Oggetto di descrizione |
---|---|
-c [csp] |
Imposta il provider del servizio di crittografia (CSP, Cryptographic Service Provider) predefinito da utilizzare per la firma con nome sicuro. Questa impostazione ha effetto sull'intero computer. Se non si specifica alcun nome CSP, l'impostazione corrente verrà cancellata. |
-d contenitore |
Elimina dal CSP del nome sicuro il contenitore di chiavi specificato. |
-D assembly1 assembly2 |
Verifica che due assembly differiscano solo nella firma. Questa opzione è spesso utilizzata come controllo dopo che un assembly è stato nuovamente firmato con una coppia di chiavi differente. |
-e assembly outfile |
Estrae la chiave pubblica da assembly e la archivia in file di output. |
-h |
Visualizza la sintassi e le opzioni dei comandi dello strumento. |
-i file di input contenitore |
Installa la coppia di chiavi da file di input nel contenitore delle chiavi specificato. Il contenitore di chiavi si trova nel CSP del nome sicuro. |
-k [dimensione chiave] file di output |
Genera una nuova chiave RSACryptoServiceProvider con la dimensione indicata e la scrive nel file specificato. Nel file vengono incluse sia la chiave pubblica sia la chiave privata. Se non si specifica una dimensione per la chiave, verrà generata una chiave a 1024 bit se è installato Microsoft Enhanced Cryptographic Provider oppure una chiave a 512 se questo provider non è installato. Se è installato Microsoft Enhanced Cryptographic Provider, il parametro keysize supporta lunghezze di chiave da 384 a 16.384 bit con incrementi di 8 bit. Se invece è installato Microsoft Base Cryptographic Provider, supporta lunghezze di chiave da 384 a 512 bit con incrementi di 8 bit. |
-m [y|n] |
Indica se i contenitori di chiavi sono specifici del computer o dell'utente. Se si specifica y, i contenitori di chiavi sono specifici del computer. Se si specifica n, i contenitori di chiavi sono specifici dell'utente. Se non si specifica né y né n, questa opzione visualizzerà l'impostazione corrente. |
-o infile [outfile] |
Estrae la chiave pubblica da file di input e la archivia in un file CSV. I byte della chiave pubblica sono separati da virgole. Questo formato è utile per gestire i riferimenti alle chiavi definiti a livello di codice sotto forma di matrici inizializzate nel codice sorgente. Se non si specifica alcun file di output, questa opzione inserirà l'output negli Appunti.
Nota
Questa opzione non verifica che l'input sia solo una chiave pubblica.Se in infile è contenuta una coppia di chiavi con una chiave privata, verrà estratta anche la chiave privata.
|
-p file di input file di output |
Estrae la chiave pubblica dalla coppia di chiavi contenuta in file di input e la archivia in file di output. È possibile utilizzare questa chiave pubblica per ritardare la firma di un assembly mediante le opzioni /delaysign+ e /keyfile dell'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. |
-pc container outfile |
Estrae la chiave pubblica dalla coppia di chiavi contenuta in contenitore e la archivia in file di output. |
-Pb [y|n] |
Specifica se sono applicati i criteri per ignorare i nomi sicuri. Se si specifica y, i nomi sicuri per gli assembly con attendibilità totale non vengono convalidati se caricati in un oggetto AppDomain con attendibilità totale. Se si specifica n, i nomi sicuri vengono convalidati per verificare se sono corretti, ma non per individuare un nome sicuro specifico. StrongNameIdentityPermission non ha effetto sugli assembly con attendibilità totale. È necessario eseguire un controllo manuale per rilevare una corrispondenza di nomi sicuri. Se non si specifica né y né n, questa opzione visualizzerà l'impostazione corrente. Il valore predefinito è y.
Nota
Nei computer a 64 bit è necessario insorgere questo parametro nell'istanza di Sn.exe a 32 bit e a 64 bit.
|
-q[uiet] |
Specifica la modalità non interattiva. Evita la visualizzazione dei messaggi di operazione riuscita. |
-R[a] assembly file di input |
Firma nuovamente un assembly firmato in precedenza o per cui è impostata la firma ritardata con la coppia di chiavi presente in infile. Se si utilizza l'opzione -Ra, gli hash vengono ricalcolati per tutti i file dell'assembly. |
-Rc[a] assembly contenitore |
Firma nuovamente un assembly firmato in precedenza o per cui è impostata la firma ritardata con la coppia di chiavi presente in contenitore. Se si utilizza l'opzione -Rca, gli hash vengono ricalcolati per tutti i file dell'assembly. |
-Rh assembly |
Ricalcola gli hash per tutti i file dell'assembly. |
-t[p] file di input |
Visualizza il token per la chiave pubblica archiviata in file di input. Il contenuto di file di input deve essere una chiave pubblica generata in precedenza dal file di una coppia di chiavi utilizzando -p. Non utilizzare l'opzione -t[p] per estrarre il token direttamente dal file di una coppia di chiavi. Sn.exe calcola il token utilizzando una funzione hash tratta dalla chiave pubblica. Per risparmiare spazio, Common Language Runtime archivia i token della chiave pubblica nel manifesto come parte di un riferimento a un altro assembly quando registra una dipendenza in un assembly con nome sicuro. L'opzione -tp visualizza anche la chiave pubblica, oltre al token. Si noti che questa opzione non verifica la firma dell'assembly e che non deve essere utilizzata per prendere decisioni sull'attendibilità. Questa opzione consente di visualizzare solo i dati non elaborati del token della chiave pubblica. |
-T[p] assembly |
Consente di visualizzare il token della chiave pubblica per assembly. L'assembly deve corrispondere al nome di un file contenente un manifesto dell'assembly. Sn.exe calcola il token utilizzando una funzione hash tratta dalla chiave pubblica. Per risparmiare spazio, il runtime archivia i token della chiave pubblica nel manifesto come parte di un riferimento a un altro assembly quando registra una dipendenza in un assembly con nome sicuro. L'opzione -Tp visualizza la chiave pubblica oltre al token. Si noti che questa opzione non verifica la firma dell'assembly e che non deve essere utilizzata per prendere decisioni sull'attendibilità. Questa opzione consente di visualizzare solo i dati non elaborati del token della chiave pubblica. |
-TSassembly infile |
Appone una firma di test all'assembly firmato o parzialmente firmato con la coppia di chiavi presente in infile. |
-TSc assembly container |
Appone una firma di test all'assembly firmato o parzialmente firmato con la coppia di chiavi presente nel contenitore di chiavi container. |
-v assembly |
Verifica il nome sicuro di assembly, dove assembly è il nome di un file contenente un manifesto dell'assembly. |
-vf assembly |
Verifica il nome sicuro in assembly. A differenza dall'opzione -v, -vf impone la verifica, anche se questa è stata disabilitata mediante l'opzione -Vr. |
-Vl |
Elenca le impostazioni correnti per la verifica del nome sicuro nel computer. |
-Vr assembly [userlist] [infile] |
Registra assembly per l'omissione della verifica. Se lo si desidera, è possibile specificare un elenco di nomi utente, separati da virgole. Se si specifica file di input, la verifica resta attivata, ma nelle operazioni di verifica verrà utilizzata la chiave pubblica contenuta in file di input. È possibile specificare assembly nella forma *, strongname per registrare tutti gli assembly con il nome sicuro specificato. Strongname deve essere specificato come stringa di cifre esadecimali che rappresenta la chiave pubblica in formato token. Vedere le opzioni -t e -T per visualizzare il token della chiave pubblica.
Attenzione
Utilizzare questa opzione solo durante lo sviluppo.L'aggiunta di un assembly all'elenco di omissione della verifica rende vulnerabile il sistema di sicurezza.Un assembly dannoso potrebbe utilizzare 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à.La verifica verrebbe omessa quindi anche per l'assembly dannoso.
|
-Vu assembly |
Annulla la registrazione di assembly per l'omissione della verifica. Per -Vu valgono le stesse regole di denominazione dell'assembly applicate per -Vr. |
-Vx |
Rimuove tutte le voci per le quali è omessa la verifica. |
-? |
Visualizza la sintassi e le opzioni dei comandi dello strumento. |
Nota |
---|
Affinché le opzioni di Sn.exe vengano riconosciute dallo strumento, è necessario che vengano digitate esattamente come indicato, rispettando con precisione la combinazione di maiuscole e minuscole. |
Note
Le opzioni -R e –Rc sono utili con gli assembly per i quali è stata impostata la firma ritardata. 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.
Nota |
---|
Per i parametri (ad esempio, –Vr) che scrivono su risorse protette nel Registro di sistema, eseguire il comando SN.exe come amministratore. |
Esempi
Il comando che segue crea una nuova coppia di chiavi casuale e la archivia 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.
sn -i keyPair.snk MyContainer
Il comando che segue estrae la chiave pubblica da keyPair.snk e la archivia in publicKey.snk.
sn -p keyPair.snk publicKey.snk
Il comando che segue consente di visualizzare la chiave pubblica e il token per la chiave pubblica contenuti in publicKey.snk.
sn -tp publicKey.snk
Il comando che segue verifica l'assembly MyAsm.dll.
sn -v MyAsm.dll
Il comando che segue elimina MyContainer dal CSP predefinito.
sn -d MyContainer
Vedere anche
Riferimenti
Prompt dei comandi di Visual Studio e Windows SDK
Concetti
Altre risorse
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Aprile 2011 |
Sono state aggiunte informazioni sull'utilizzo di Visual Studio e dei prompt dei comandi di Windows SDK. |
Miglioramento delle informazioni. |
Agosto 2010 |
Sono state aggiunte informazioni sull'esecuzione dello strumento su computer a 64 bit. |
Miglioramento delle informazioni. |