Comment accepter un certificat SSL auto-signé dans un WCF client?
Cela peut être une question stupide, mais je ne peux pas trouver la réponse.
Ce que je voudrais faire:
J'ai un service WCF hébergé par IIS. Il fonctionne parfaitement, je peux accéder à la wsdl, j'ai un certificat auto-signé pour le serveur etc. Je voudrais lancer un appel à ce service à partir d'un client WPF.
Le problème c'est que depuis que j'ai un certificat auto-signé, j'ai le d'exception lors de l'appel du service:
N'a pas pu établir une relation de confiance pour le canal sécurisé SSL/TLS avec autorité 'localhost'.
Si j'ai accès au site (ou le service) à partir d'un navigateur, c'est pas un problème, parce que le navigateur me prévient sur le certificat, et me donne le choix de l'affichage de la page de toute façon. Mais le WPF client déclenche une exception.
Je ne veux pas désactiver complètement le processus d'authentification, je voudrais simplement donner aux utilisateurs la possibilité d'ignorer cet avertissement (comme les navigateurs n').
Quelqu'un peut-il fournir un peu de code pour cela? Si vous avez couru dans un bon tutoriel détaillé sur ce sujet, ce serait génial. (Voir, mon problème avec les tutoriels que j'ai trouvé est le manque de détails)
OriginalL'auteur Tenshiko | 2011-02-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vous inscrire vous-même le certificat. Si de charger le certificat du client en tant que bien, et puis enregistrez le comme de confiance vous ne devriez pas obtenir que l'avertissement.
Vous avez besoin de trouver une X509CertificateCollection et ajouter le certificat à la collection. J'ai eu ce genre de problème avec un SmtpClient cours d'exécution sur Ssl.
En accrochant le
System.Net.ServicePointManager.ServerCertificateValidationCallback
ou la mise en œuvre deSystem.Net.ICertificatePolicy
et identifier mes propres installé certificat valide/de confiance (attaché à laSystem.Net.ServicePointManager.CertificatePolicy
).Ce n'est pas WCF choses en soi, mais de ce que je pourrais dire, ceci devrait se traduire à la WCF. Tout dépend de ce que WCF est utilise sous le capot.
Si vous crochet
System.Net.ServicePointManager.ServerCertificateValidationCallback
voulez-vous obtenir une demande de valider le certificat?Un non-code de l'approche à ce problème serait de confiance du certificat sur le dev de la machine et de l'environnement de test. Comme expliqué ici stackoverflow.com/a/11296429/178620
OriginalL'auteur John Leidegren
Voici le montant minimum de code dont vous avez besoin pour faire de la WCF client d'accepter l'arbitraire d'un certificat. C'est pas sûr. L'utilisation à des fins de test. Ne me blâmez pas si ce code devient fou furieux et mange ton petit chaton.
Le retour d'appel:
Code sans vergogne levée à partir de la moins utile de répondre à Est-il possible de forcer le client test WCF à accepter un certificat auto-signé?
OriginalL'auteur user8032