2013-03-08 6 views
25

Ho svolto una ricerca approfondita su stackoverflow e ho ricevuto numerose risposte, ma nessuna di esse ha funzionato ancora per noi. Recentemente abbiamo acquistato un certificato di firma del codice da comodo che useremo per firmare la nostra applicazione C# # WPF.
Abbiamo seguito le istruzioni su following URLImpossibile importare il seguente errore del file chiave durante l'importazione di pfx

e abbiamo quindi importato il certificato in Visual Studio sotto 'Proprietà progetto-> canto-> firma l'assieme'. Quindi proviamo a creare il progetto e otteniamo il seguente errore:

Impossibile importare il seguente file chiave: comodo.pfx. Il file chiave può essere protetto da password. Per correggere ciò, provare a importare nuovamente il certificato manualmente, installare il certificato nel CSP Strong Name con il seguente nome del contenitore di chiavi: VS_KEY_xxxxxxxxxxxxxxx.

Abbiamo trovato numerose soluzioni su internet e hanno provato quanto segue:

  • Cliccare su Cambia password e utilizzare la stessa password in tutti i 3 posti
  • sn -i [comodo] .pfx VS_KEY_xxxxxxxxxxxxx
  • cercato di convertirlo in file di SNK senza password e l'uso che, invece di .pfx
  • provato in esecuzione visual Studio come amministratore e l'importazione chiave
  • provato a generare molto semplice pr barebone ogetto e la firma con quella
  • provato Visual Studio 2010 e 2012
  • Abbiamo provato ad aggiungere il seguente al montaggio [assembly: AssemblyKeyFile ("percorso del file di chiave")]
  • evento Aggiunto in postbuild "C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ signtool.exe "sign/f" $ (ProjectDir) [keyfile] .pfx "/ p [thepassword]/v" $ (ProjectDir) obj \ Release \ $ (TargetFileName)"
  • aggiunti in una sezione nel file csproj:

  • Scaricato http://visualstudiogallery.msdn.microsoft.com/a83505c6-77b3-44a6-b53b-73d77cba84c8 e cliccato su 'Apply Fix' sull'errore

Abbiamo avuto successo finora. Possiamo importare la chiave semplicemente usando la password, così sappiamo che la password è corretta. Sappiamo anche che questo funziona bene per la firma del manifest in una pubblicazione clickonce. Giusto per assicurarci che non avessimo altri problemi, abbiamo disattivato la firma di cilckonce e stiamo solo provando a firmare l'assembly.

+0

Ci sono alcuni arounds di lavoro, http://connect.microsoft.com/VisualStudio/feedback/details/524792/ import-key-file-was-cancellato – Raj

+0

Hey Raj. Grazie per la risposta, ho provato tutti questi rimedi e non ho avuto successo. – hobeau

+0

Quando hai provato il metodo "sn -i [comodo] .pfx VS_KEY_xxxxxxxxxxxx", hai ricevuto il messaggio di aiuto? Ho fatto e non ha avuto successo, ma se ho eseguito il "Prompt dei comandi dello sviluppatore" come amministratore mi ha chiesto una password e ha avuto successo. – VoteCoffee

risposta

11

Ho appreso che Visual Studio non sembra gestire molto bene i certificati subordinati.
Ho provato diversi certificati su più macchine (diverse combinazioni OS/VS) con gli stessi risultati.
Ho finalmente trovato questo come una soluzione alternativa:

La questione con Visual Studio sembra essere che non gli piace il concatenamento dei certificati. Questo è possibile risolvere importando/esportando il certificato senza il concatenamento. Il prossimo numero è indirizzato da using the certutil and export with the AT_SIGNATURE. Sono stato in grado di importarlo in VS e creare, tuttavia non sembra firmare l'assemblea.

+0

Questo è l'unico metodo che funziona in modo coerente come indicato qui: http://social.msdn.microsoft.com/Forums/windows/en-US/b33fc15d-d125-44b1-846a-7f461f3b1504/sign-assembly-with-pfx -certificate? forum = winformssetup –

+0

Grazie per questo. Il mio era un po 'più ampio, combinato con la seconda risposta più votata qui: http://stackoverflow.com/questions/1351830/what-does-exited-with-code-9009-mean-during-this-build/ 9990227 # 9990227. Ho aggiunto quanto segue come evento post-build: 'call" $ (DevEnvDir) .. \ Tools \ vsvars32.bat "' e 'signtool sign/f" $ (SolutionDir) keyfile.pfx "/ p password/v" $ (ProjectDir) $ (OutDir) $ (TargetFileName) '. Il mio keyfile era alla base di una soluzione, referenziato da più progetti.La macro 'OutDir' cambia in' debug' o 'release' in base alla configurazione attiva. – ps2goat

+1

E come altri hanno detto, sono stato in grado di installare il certificato Authenticode normalmente.Per qualche ragione, Visual Studio non è stato in grado di utilizzare un certificato incatenato nella scheda delle proprietà del progetto – ps2goat

9

Ho ottenuto un errore simile. Risolto scegliendo Installa PFX da un menu di scelta rapida in Esplora risorse.

+0

questo ha funzionato come un fascino utilizzando vs2013 su win 8.1 – kpierce8

13

È possibile aprire semplicemente "Progetto>proprietà>firma" e deselezionare la casella di controllo "Firma l'ClickOnce manifesta".

3

La soluzione migliore a cui riesco a pensare è andare su Progetto -> Proprietà -> Scegli un menu a discesa con nome chiave forte e seleziona "Nuovo" -> Crea la chiave e vai alla sezione Certificato in alto -> fai clic su Seleziona da file e scegli la nuova chiave che hai creato -> Crea soluzione -> Pubblica.

1

Un altro 'ha lavorato per me' ...

destro cliccato sul PFX in Esplora risorse, ha scelto 'Installa PFX' e nella procedura guidata fornita la password. Quindi, nelle proprietà del progetto in VS, in "Firma" scegliere "Cambia password" e reinserire la password. Prima di questo funzionava solo l'esecuzione di VS come amministratore.

0

Per il seguente lavoro, Primo certificato di installazione facendo doppio clic su di esso. quindi,

Proprietà progetto -> Firma -> Se è selezionato "Firma il ClickOnce manifesti" -> fare clic su "Seleziona dal file" e selezionare il file .pfx e dovrebbe mostrare tutti i dettagli validi del certificato come Rilasciato, Rilasciato Per, Scopo previsto ecc.

0

Ho avuto lo stesso problema. Sto costruendo l'applicazione da una pen drive su numerosi computer e credo che questa sia la causa.

Ho trovato il successo con il metodo "sn -i [comodo] .pfx VS_KEY_xxxxxxxxxxxx". ho fatto le seguenti operazioni:

  1. Run "Sviluppatore Prompt dei comandi" come amministratore (trovato in Start-> Tutti i programmi-> visiva Studio-> Strumenti)
  2. navigare verso la directory chiave (per me questo è stato la radice della directory del progetto, non la directory della soluzione)
  3. Esegui "sn -i mykey.pfx VS_KEY_xxxxxxxxxxxxx" (mykey.pfx e VS_KEY_xxxxxxxxxxxxx sono entrambi trovano nel messaggio di errore di generazione)
  4. Immettere la password se richiesta

Quando ho provato questo senza correre "Prompt Developer Command" in qualità di amministratore, ottengo il testo di aiuto del display durante l'esecuzione " sn -i mykey.pfx VS_KEY_xxxxxxxxxxxxx "e non funziona. Il trucco era assicurarmi di eseguire il prompt di sviluppo come amministratore.

per il contesto, sto usando VS Comunità 2013,5, Windows 7 Professional x64, e NET Framework 4.7