2017-09-29 2 views
0

J'essaie d'utiliser un certificat push Apple dans une application Asp.NET Core 1.1 mais il ne trouve aucun certificat.Application Web Azure "ERR: Cert with thumbprint: ..." introuvable dans le magasin de certificats de la machine locale. "

J'ai téléchargé le certificat et défini WEBSITE_LOAD_CERTIFICATES sur * (tous).

Le code suivant est ce que j'utilise pour obtenir le certificat

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
    try 
    { 
     store.Open(OpenFlags.ReadOnly); 

     var certCollection = store.Certificates; 
     var signingCert = certCollection.Find(X509FindType.FindByThumbprint, thumbprint, false); 
     if (signingCert.Count == 0) 
     { 
      throw new FileNotFoundException(string.Format("Cert with thumbprint: '{0}' not found in local machine cert store.", thumbprint)); 
     } 
     return signingCert[0]; 
} 

Qu'est-ce que je manque?

+1

Avez-vous essayé avec 'StoreLocation.CurrentUser'? C'est ce que je dois faire dans Azure pour accéder aux certificats installés de mes applications. Voir aussi [cette réponse] (https://stackoverflow.com/questions/23827884/accessing-uploaded-certificates-in-azure-web-sites#answer-27819926). – GeorgDangl

+0

Oui, la même chose –

+0

Que se passe-t-il lorsque vous définissez 'WEBSITE_LOAD_CERTIFICATES' sur l'empreinte numérique au lieu d'un caractère générique? – GeorgDangl

Répondre

1

Il semble que vous souhaitez upload your certificate to the certificates collection in Azure Websites and consume it in your web application from your site’s personal certificate store. Je télécharge mon certificat et utilise le code suivant pour le consommer dans l'application Asp.NET Core 1.1, le code fonctionne pour moi.

X509Certificate2 retVal = null; 

var thumbprint = "{cert_thumbprint}"; 
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 

store.Open(OpenFlags.ReadOnly); 

var certCollection = store.Certificates; 

var signingCert = certCollection.Find(X509FindType.FindByThumbprint, thumbprint, false); 

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

débogage à distance le code et le code fonctionne très bien sur le site d'azur

enter image description here

+0

Votre code fonctionne, merci! :) –

+0

Mais cela ne fonctionne que dans un environnement de production, dans un cert encore nul. –