Assembly con nome sicuro (firma degli assembly)
Aggiornamento: novembre 2007
In questo argomento viene descritto come firmare gli assembly, operazione spesso definita come assegnazione di un nome sicuro agli assembly.
Note
Quando si utilizza Visual C++, ricorrere alle opzioni del linker per la firma dell'assembly in modo da evitare i problemi correlati agli attributi CLR:
I motivi per cui non è consigliabile utilizzare gli attributi includono la visibilità del nome di chiave nei metadati dell'assembly, fattore che rappresenta un potenziale rischio per la protezione, soprattutto se tale nome contiene informazioni riservate. Inoltre, se per assegnare all'assembly un nome sicuro si ricorre agli attributi di CLR, il processo di generazione utilizzato dall'ambiente di sviluppo Visual C++ invaliderà la chiave con cui è stato firmato l'assembly ed eseguirà uno strumento di post-elaborazione quale mt.exe.
Se la generazione viene effettuata dalla riga di comando, l'assembly viene firmato utilizzando le opzioni del linker e si esegue uno strumento di post-elaborazione (ad esempio, mt.exe), sarà necessario firmare nuovamente l'assembly tramite sn.exe. In alternativa, è possibile generare e ritardare la firma dell'assembly e quindi completare il processo di firma dopo aver eseguito gli strumenti di post-elaborazione.
Se durante la generazione nell'ambiente di sviluppo vengono utilizzati gli attributi per la firma, sarà possibile firmare l'assembly chiamando sn.exe (Strumento Nome sicuro (Sn.exe)) in modo esplicito in un evento di post-generazione. Per ulteriori informazioni, vedere Specifica di eventi di compilazione. L'utilizzo degli attributi e di un evento di post-generazione, anziché delle opzioni del linker, può ridurre i tempi di generazione.
La firma dell'assembly è supportata dalle seguenti opzioni del linker:
/KEYFILE (Specifica una chiave o una coppia di chiavi per firmare un assembly)
/KEYCONTAINER (Specifica un contenitore di chiavi per firmare un assembly)
Per ulteriori informazioni sugli assembly con nome sicuro, vedere Creazione e utilizzo degli assembly con nome sicuro.