2010-11-22 4 views
2

Tous -C# HTTPS WebClient Politique d'authentification

J'utilise la classe C de l 'WebClient # pour accéder à une ressource sur un serveur distant via https. La ressource qui m'intéresse est un fichier sur le serveur distant. J'utilise l'appel suivant pour accéder au fichier:

 
WebClient client = new WebClient(); 
client.DownloadData("https://someuri/file.txt"); 

Lorsque vous appelez le code ci-dessus je reçois le un System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. je manuellement visted le site via IE et a ajouté le cert. en tant qu'éditeur de confiance et peut naviguer jusqu'à la ressource sans problème dans IE. C# n'utilise-t-il pas le magasin de certificats Windows standard? ou dois-je écrire le mien CertificatePolicy? J'aimerais vraiment utiliser les algorithmes d'authentification intégrés.

Merci d'avance.

+0

Je crains que ce n'est pas vraiment une réponse, mais cela peut vous aider un peu. Voir la réponse acceptée ici: http://stackoverflow.com/questions/1301127/how-to-ignore-a-certificate-error-with-c-2-0-webclient-without-the-certificate –

+0

Merci pour la contribution , pas exactement une réponse. Oui, je pourrais étendre ICertificatePolicy et avoir la valeur CheckValidationResult toujours vraie, mais je préférerais pouvoir charger les certificats de confiance dans Windows et faire fonctionner les méthodes C# de niveau inférieur. Toujours retourner vrai n'est pas une solution. –

+0

Dans IE, avez-vous simplement accepté le certificat lorsque vous y avez accédé pour la première fois ou avez-vous suivi le processus d'ajout à votre magasin de certificats? –

Répondre

1

Pour que cela fonctionne correctement, vous ne pouvez pas accepter le certificat de fin dans le navigateur. Vous devez utiliser la console cmd: mmc pour charger les certificats dans le magasin d'approbation des machines plutôt que dans le magasin d'approbation des utilisateurs.

+0

et comment je fais ça? – VinnyG

0

Exécutez-vous ce code via ASP.Net? Si c'est le cas, vous devrez peut-être installer le CERT pour l'ordinateur local, car le CERT que vous avez installé pour votre connexion ne peut pas être utilisé par ASP.net