Strumento Nome sicuro (Sn.exe)

Aggiornamento: novembre 2007

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.

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

Parametri

Opzione

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 è applicato il criterio 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[aassembly 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[aassembly 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

Visualizza il token della chiave pubblica per assembly . 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 dell'opzione -v, -vf impone la verifica, anche se questa è stata disattivata 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.

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

Concetti

Assembly con nomi sicuri

Riferimenti

Strumenti di .NET Framework

Assembly Linker (Al.exe)

Prompt dei comandi di SDK