2017-06-27 4 views
0

Ich habe einen Azure App Service, der sich mit ACS anmeldet, es ist eine MVC 5-Site, wenn das überhaupt hilft.Azure App Service "Dienstzertifikat konnte nicht gefunden werden", wenn es dort ist

Es ein Zertifikat benötigt, lassen Sie uns sagen, dass die Daumenabdruck ist AF47AF47AF47AF47AF47AF47AF47AF47AF47AF47

ich es über das Portal hochgeladen: enter image description here

Dann habe ich die Anwendungseinstellungen> App-Einstellung von WEBSITE_LOAD_CERTIFICATES/*: enter image description here

Funktioniert gut lokal (natürlich) - wenn ich es auf Azure laden, bekomme ich:

AF47AF47AF47AF47AF47AF47AF47AF47AF47AF47in mein Speicher auf Current HandlingInstanceID:

nicht Service-Zertifikat finden kann 74429bcf-4e02-4e28-a261-329bf831f7ce Eine Ausnahme vom Typ 'System.ArgumentNullException' aufgetreten und war gefangen. ------------------------------------------------- --------------------------- 06/27/2017 22:21:44 Typ: System.ArgumentNullException, mscorlib, Version = 4.0. 0.0, Kultur = neutral, PublicKeyToken = b77a5c561934e089 Nachricht: Wert kann nicht null sein.

(Stack-Trace nicht verfügbar)

Jede Idee, was ich vermisst? Ich habe versucht, das Zertifikat in meinem Application_Start() auch ohne Glück zu laden - ich kann diesen Code veröffentlichen, wenn jemand will.

Antwort

2

Es sieht so aus, als ob Sie Ihr Zertifikat in die Azure App Service-Webanwendung hochladen und es in Ihrer MVC-Anwendung vom persönlichen Zertifikatsspeicher Ihrer Site aus verwenden möchten. Ich lade ein Zertifikat hoch und füge eine App-Einstellung namens WEBSITE_LOAD_CERTIFICATES hinzu , und dann kann ich auf das Zertifikat in meiner Anwendung mit dem folgenden Code zugreifen, bitte beachten Sie es.

var thumbprint = "xxxxxxxxxxxxxx"; 

X509Certificate2 retVal = null; 

X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
certStore.Open(OpenFlags.ReadOnly); 

X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false); 

if (certCollection.Count > 0) 
{ 
    retVal = certCollection[0]; 
} 

certStore.Close(); 

remote debug web app und es funktioniert wie erwartet.

enter image description here

Außerdem erklärt this article mit detaillierten Schritten Zertifikate in Azure App Services, bitte darauf verweisen.

+0

Dies ist genau das, was ich tue, aber es scheint in meinem Speicher von CurrentUser, aber nicht Mein Geschäft von LocalMachine – naspinski

+0

Es wird immer in den ** CurrentUser ** Speicher wie im Artikel von Fred geteilt beschrieben. Sie können nicht gleichzeitig auf den LocalMachine-Speicher zugreifen, da die Anwendung nicht über die erforderlichen Berechtigungen verfügt. –

Verwandte Themen