Domanda

Ho una soluzione composta da cinque progetti, ciascuno dei quali compila in assembly separati.In questo momento li sto firmando in codice, ma sono abbastanza sicuro di sbagliare.Qual è la migliore pratica qui?

  • Firma ciascuno con una chiave diversa;assicurati che le password siano diverse
  • Firma ciascuno con una chiave diversa;usa la stessa password se vuoi
  • Firmate ciascuno con la stessa chiave
  • Qualcosa di completamente diverso

Fondamentalmente non sono del tutto sicuro di cosa significhi loro "firmare" o quali siano le migliori pratiche qui, quindi una discussione più generale sarebbe utile.Tutto quello che so veramente è questo FxCop mi ha urlato contro ed è stato facile risolverlo facendo clic sulla casella di controllo "Firma questo assembly" e generando un file .pfx utilizzando Visual Studio (2008).

È stato utile?

Soluzione

Se il tuo unico obiettivo è impedire a FxCop di sgridarti, allora hai trovato la migliore pratica.

La migliore pratica per firmare le tue assemblee è qualcosa che dipende completamente dai tuoi obiettivi e dalle tue esigenze.Avremmo bisogno di più informazioni come la distribuzione prevista:

  • Per uso personale
  • Da utilizzare sui PC della rete aziendale come applicazione client
  • In esecuzione su un server web
  • In esecuzione in SQL Server
  • Scaricato su Internet
  • Venduto su CD in pellicola termoretraibile
  • Caricato direttamente in un cervello cibernetico
  • Eccetera.

In genere si utilizza la firma del codice per verificare che gli assembly provengano da una fonte attendibile specifica e non siano stati modificati. Quindi vanno bene tutti con la stessa chiave. Ora, il modo in cui vengono determinate la fiducia e l’identità è un’altra storia.

AGGIORNAMENTO: In che modo ciò avvantaggia i tuoi utenti finali durante la distribuzione sul Web è se hai ottenuto un file certificato di firma del software da un'autorità di certificazione.Quindi, quando scaricano i tuoi assembly, possono verificarne la provenienza Emporio del software di Domenic, e non sono stati modificati o danneggiati lungo il percorso.Dovrai anche firmare il programma di installazione quando viene scaricato.Ciò impedisce l'avviso che alcuni browser visualizzano che è stato ottenuto da una fonte sconosciuta.

Tieni presente che pagherai per un certificato di firma del software.Ciò che ottieni è che l'autorità di certificazione diventa la terza parte fidata che verifica che tu sia chi dici di essere.Funziona grazie a una rete di fiducia che risale a un certificato radice installato nel loro sistema operativo.È possibile scegliere tra alcune autorità di certificazione, ma è necessario assicurarsi che siano supportate dai certificati root sul sistema operativo di destinazione.

Altri suggerimenti

La differenza più evidente tra gli assembly firmati e non firmati si trova in un'applicazione ClickOnce.Se non lo firmi, gli utenti riceveranno una spaventosa finestra di dialogo di avviso "Autore sconosciuto" la prima volta che eseguono l'applicazione.Se lo hai firmato con a certificato da un'autorità attendibile, quindi vedono una finestra di dialogo meno spaventosa.Per quanto ne so, la firma con un certificato generato personalmente non influisce sull'avviso "Autore sconosciuto". SSL istantaneo da Comodo contiene esempi di finestre di dialogo.

Ci sono alcune differenze più sottili.È necessario firmare un assembly prima che possa essere installato nella Global Assembly Cache (GAC) dove può essere condiviso da più applicazioni.La firma è parte integrante della sicurezza dall'accesso di codice (CAS), ma non ho trovato nessuno che possa far funzionare CAS.Sono abbastanza sicuro che sia GAC ​​che CAS funzionino bene con i certificati generati da te.

È utile perché l'eseguibile prevede un assembly con un nome forte.Impedisce a chiunque di sostituire maliziosamente uno dei tuoi in un altro assembly.Inoltre l'utente potrebbe concedere autorizzazioni CAS all'assembly in base al nome sicuro.

Non penso che dovresti distribuire il file .pfx, tienilo al sicuro per le dimissioni dell'assemblea.

È importante mantenere segreto il file PFX poiché contiene la chiave privata.

Se quella chiave viene resa disponibile ad altri, chiunque potrà firmare assemblee o programmi mascherati da te.

Per associare il tuo nome ai tuoi assembly (agli occhi di Windows) dovrai ottenere un certificato digitale (la porzione del file PFX contenente il tuo nome) firmato da un'autorità fidata.

In realtà riceverai un nuovo certificato, ma con le stesse informazioni.

Dovrai pagare per questo certificato (probabilmente ogni anno), ma il autorità di certificazione garantirà effettivamente la tua esistenza (dopo aver inviato loro via fax le copie del tuo passaporto o patente di guida e una fattura nazionale).

La firma viene utilizzata per identificare in modo univoco un assembly.Maggiori dettagli sono disponibili Come:Firma un'assemblea (Visual Studio).

In termini di best practice, è corretto utilizzare la stessa chiave purché gli assembly abbiano nomi diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top