2016-05-26 42 views
5

Ho distribuito un'applicazione Web come app Web sul servizio app di Azure. Ho caricato alcuni certificati nel portale di Azure, poiché l'app Web viene eseguita su SSL e utilizziamo un altro certificato per eseguire alcune decodifiche.Certificato non trovato nell'app Web di Azure

Per quest'ultimo caso Ho un metodo (che funziona bene a livello locale) per trovare un certificato:

public static X509Certificate2 FindCertificate(KnownCertificate certificate) 
    { 
     return FindCertificate(StoreName.My, StoreLocation.CurrentUser, X509FindType.FindByThumbprint, certificate.Thumbprint); 
    } 

Ma ottengo un errore che il certificato con identificazione personale XYZ non è stato trovato. Sebbene sia presente nel portale di Azure. (L'avevo caricato e importato)

Sto utilizzando StoreLocation.CurrentUser come suggerito in THIS POST ma ancora non funziona. Sto usando il negozio sbagliato o cos'altro mi manca?

EDIT: sono riuscito a eseguire il debug remotetly mio WebApp e con la caratteristica di ImmediateWindow VisualStudio Ho eseguito questo codice

new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser).Certificates.Find(findType, findValue, false).Count; 

testare tutte le possibili combinazioni di StoreNames e StoreLocations ma senza alcun risultato.

È possibile, come dichiarato here, che per l'utilizzo del certificato con scopi diversi dal traffico https è necessario un servizio cloud e che (suppongo che) i servizi app non lo supportino?

+0

Per chiunque abbia un problema simile -non è necessario eseguire questa operazione, "testare tutte le combinazioni possibili", quando si carica il certificato nel servizio app di Azure, viene sempre inserito in StoreName.My, Store Location.CurrentUser. – Dhanuka777

risposta

9

È necessario aggiungere WEBSITE_LOAD_CERTIFICATES all'app Web Impostazioni app. Impostare il valore su "*" o sull'identificazione personale del certificato che si desidera caricare nell'ambiente dell'app Web. La mia preferenza personale è quella di impostare questo valore su "*", che significa caricare tutti i certificati che sono stati caricati.

enter image description here

Dopo avere applicato questo cambiamento si dovrebbe essere in grado di caricare il certificato all'interno del codice web app.

Ulteriori informazioni su come utilizzare i certificati sono disponibili here. L'articolo è un po 'datato (negli standard odierni) ma ancora rilevante.

+0

Grazie Rick Sì alla fine ieri sera l'avevo risolto io stesso ma non avevo ancora aggiornato la risposta. Ciò che è complicato è che avevo prima aggiunto quell'impostazione in Web.config e non ha funzionato, e l'aggiunta solo dal portale ha fatto il trucco. –

+0

Ho provato questo, ancora non funziona, il certificato deve firmare da una CA? o può essere un certificato autofirmato? – MBen

+0

L'autofirmato funzionerà allo stesso modo. In effetti, è quello che ho usato nella risposta sopra. Fai attenzione a copiare l'identificazione personale del certificato in modo da evitare di copiare caratteri nascosti. Ad esempio, copia/incolla l'identificazione personale nel blocco note e copia dal blocco note e incolla nelle impostazioni dell'app. –