145 votes

WCF : N’a pas pu établir de relation d’approbation pour le canal sécurisé SSL/TLS avec autorité

Pensais vraiment que j'ai eu ce problème résolu, mais il était camouflé avant.

J'ai un service WCF hébergé dans IIS 7 à l'aide de HTTPS. Quand je navigue sur ce site dans internet explorer, il fonctionne comme un charme, c'est parce que j'AI ajouté le certificat local de certificat racine de l'autorité de magasin.

Je suis en développement sur 1 machine, de sorte que le client et le serveur sont sur une même machine. Le certificat est auto-signé directement à partir de IIS 7 composant logiciel enfichable gestion.

Je ne cesse de cette erreur maintenant:

N'a pas pu établir une relation de confiance pour le canal sécurisé SSL/TLS avec autorité.... lorsqu'il est appelé à partir de la console client.

J'manuellement me suis donné les autorisations de réseau et de service pour le certificat, à l'aide de findprivatekey et à l'aide de cacls.exe

Où puis-je regarder me semble avoir épuisé toutes les possibilités pour expliquer pourquoi je ne peux pas me connecter.

**Mise à JOUR **

Merci pour les réponses, j'ai essayé de vous connecter au service à l'aide de SOAPUI, et qui fonctionne, donc ça doit être un problème dans les applications de mon client, qui est le code en fonction de ce que l'habitude de travailler avec http.

203voto

Joachim Kerschbaumer Points 5452

Comme une solution de contournement, vous pouvez ajouter un gestionnaire à l' ServicePointManagers' ServerCertificateValidationCallback sur le côté client:

System.Net.ServicePointManager.ServerCertificateValidationCallback +=
    (se, cert, chain, sslerror) =>
        {
            return true;
        };

mais sachez que ce n'est pas une bonne pratique car il ignore complètement le certificat du serveur et informe le service gestionnaire de point que tout ce certificat est fine, ce qui peut sérieusement compromettre la sécurité du client. Vous pourriez affiner tout cela et faire quelques vérifications (pour le nom de certificat, de hachage, etc). au moins, vous pouvez contourner les problèmes en cours de développement lors de l'utilisation de certificats de test.

43voto

Mike Cheel Points 3883

Quand j’ai ce problème, c’est parce que le client.config avait ses points de terminaison comme :

mais le certificat s’attendait

Changer les points de terminaison pour correspondre au FQDN du serveur résout mon problème. Je sais que ce n’est pas la seule cause de ce problème.

23voto

blowdart Points 28735

Votre problème se pose parce que vous êtes à l'aide d'un auto-signé clé. Le client n'approuve pas cette touche, ni ne la clé en elle-même une chaîne de valider ou d'une liste de révocation de certificats.

Vous avez un peu d'options - vous pouvez

  1. désactiver la validation de certificat sur le client (mauvais coup, l'homme dans le middle attaques abondent)

  2. utilisation makecert pour créer une autorité de certification racine et créer des certificats de ce que (ok déplacer, mais il n'y a pas encore de liste de révocation de certificats)

  3. créer une autorité de certification racine interne à l'aide de Windows Serveur de Certificats ou d'autres La solution PKI puis croire que root cert (un peu de douleur à gérer)

  4. l'achat d'un certificat SSL auprès d'une de la confiance des CAs (cher)

20voto

Sebastian Castaldi Points 2138

les deux premiers utilisent lamda, le troisième utilise régulièrement le code... espoir que vous trouverez utile

14voto

J'ai rencontré le même problème et j'ai été en mesure de résoudre à l'aide de deux solutions: Tout d'abord, j'ai utilisé le composant logiciel enfichable MMC "Certificats" pour le "compte de l'Ordinateur" et a traîné le certificat auto-signé dans les "Autorités de Certification Racine approuvées" le dossier. Cela signifie que l'ordinateur local (celui qui a généré le certificat) font aujourd'hui confiance à ce certificat. Deuxièmement, j'ai remarqué que le certificat a été généré pour certains internes nom de l'ordinateur, mais le service web est d'être accessible à l'aide d'un autre nom. Cela a provoqué un décalage lors de la validation du certificat. Nous avons généré un certificat pour l'ordinateur.les opérations.locale, mais accessible le service web à l'aide de https://computer.internaldomain.companydomain.com. Quand on a changé l'URL à celui utilisé pour générer le certificat on n'a pas plus d'erreurs.

Peut-être juste de commutation Url aurait fonctionné, mais en faisant le certificat de confiance vous pouvez également éviter le rouge écran dans Internet Explorer où il vous dit qu'il n'a pas confiance à ce certificat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X