2011-11-03 3 views
0

Je consomme un service et pour consommer le fournisseur de services a donné un certificat.Erreur 403 interdite lors de la connexion d'un certificat client

J'ai donc installé le certificat sur LocalMachine et à travers le code suivant je joins le certificat à la demande Web que je poste pour obtenir une réponse du service Web.

X509Certificate cert = null; 
string ResponseXml = string.Empty; 

// Represents an X.509 store, which is a physical store 
// where certificates are persisted and managed 
X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine); 

certStore.Open(OpenFlags.ReadOnly); 
X509Certificate2Collection results = 
    certStore.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, 
           Constants.CertificateName, false); 
certStore.Close(); 

if (results != null && results.Count > 0) 
    cert = results[0]; 
else 
{ 
    ErrorMessage = "Certificate not found"; 
    return ErrorMessage; 
} 
webClient.TransportSettings.ClientCertificates.Add(cert); 

Ceci fonctionne parfaitement lorsque je lance le code avec ASP.net Cassini (ASP.NET Developement Server).

Mais quand je suis d'hébergement ce code dans IIS 7.0 lui donnent interdit 403 erreur comme réponse.

Veuillez nous suggérer.

Répondre

1

Vous devriez peut-être essayer ceci:

winhttpcertcfg -g -c LOCAL_MACHINE \ -s MES (MonCertificat) -a ASPNET

Comme il se trouve, l'utilisateur qui installe le certificat est automatiquement accès accordé à la clé privée, je suppose que dans votre cas ce serait vous, donc cela fonctionne dans l'environnement de développement. Lorsque l'interface Web arrive, vous n'êtes plus l'utilisateur, ASPNET est.

Questions connexes