N'a pas pu établir un canal sécurisé SSL/TLS avec autorité "xxxxx.com'

Je suis en train d'écrire un client à l'encontre d'un client webservice SOAP, à l'aide de VS2013 et WCF. Le webservice est lui-même derrière leur pare-feu, de sorte qu'ils ont établi un proxy que je suis en train de contact. (Le proxy semble être mis en œuvre à l'aide de MuleSoft de l'ESB, qui peuvent ou peuvent ne pas être pertinentes.)

Que j'ai été donné un https: url, et un nom d'utilisateur/mot de passe. Lorsque je charge l'url dans un navigateur, je suis invité à entrer le nom d'utilisateur/mot de passe, puis-je voir le .wsdl. L' .wsdl spécifie une url interne que je ne peux pas accéder, mais je suppose que c'est pour le site réel.

Quand je créer un Service de Référence en VS2013, à l'aide de l'URL du proxy, je suis invité à entrer le nom d'utilisateur/mot de passe trois fois, puis-je obtenir un bon client, les paramètres de l'app.config, etc.

L'généré des liaisons dans l'application.config sont pour une basicHttpBinding avec le mode de sécurité de Transport, et une adresse de point de terminaison pointant vers cette inaccessibles url interne.

Donc, par la réalisation de liaisons, j':

  1. Remplacer l'inaccessible interne url avec l'url de proxy que j'ai été donné.
  2. Modifier le mode de sécurité de "TransportWithMessageCredentials"

    <bindings>
        <basicHttpBinding>
            <binding name="MyCustomersServiceSoapBinding">
                <security mode="TransportWithMessageCredential" >
                    <message clientCredentialType="UserName" />
                </security>
            </binding>
            <binding name="MyCustomersServiceSoapBinding1" />
        </basicHttpBinding>
    </bindings>
  3. Remplacer le ClientCredentials avec le nom d'utilisateur et le mot de passe:

    à l'aide de (var client = new MyCustomersServiceClient())
    {
    var loginCredentials = new ClientCredentials();
    loginCredentials.Nom d'utilisateur.Nom d'utilisateur = "ausername";
    loginCredentials.Nom d'utilisateur.Mot de passe = "apassword";

    var defaultCredentials = client.Endpoint.Behaviors.Find<ClientCredentials>();
    client.Endpoint.Behaviors.Remove(defaultCredentials);
    client.Endpoint.Behaviors.Add(loginCredentials);
    
    var myData = new MyData
    {
    };
    
    
    var result = client.receiveData(myData);

    }

Quand je le lance, j'obtiens une exception:

N'a pas pu établir un canal sécurisé SSL/TLS avec autorité "xxxxx.com'.

De navigation autour de, la plupart de ce que je trouve suggère des problèmes avec les certificats ssl, mais je ne suis pas sûr que ça a du sens. Si c'était le cas, je m'attends à voir des problèmes quand j'ai vue la .wsdl via le navigateur. Et j'ai pensé qu'en supprimant le client par défaut, les informations d'identification, je serais en contournant la vérification du certificat. Et je vois un peu de posts sur les plus obscurs problèmes qui en résultent dans ce même message d'erreur.

J'ai tourné sur le SAVON message de journalisation, mais qui m'a fourni aucune information. Il montre l'échec de message sortant, mais rien d'utilisation.

J'ai donc été à la recherche à la circulation dans un violon. Je vois deux messages, un message HTTP de "Tunnel", avec un Résultat de 200, et un HTTPS message à l'url de proxy, avec un Résultat 401.

À ce point, je vois deux possibilités:

  1. J'ai besoin d'installer un certificat SSL, la manière dont le message d'erreur indique, ou
  2. le problème est simplement que je ne suis pas fournir le nom d'utilisateur/mot de passe pour le service d'une manière qu'il comprend, et c'est en rejetant ma tentative de connexion.

Je penche vers cette dernière. Mon problème? Je ne sais rien sur le système qui héberge le service. Je suis de passage nom d'utilisateur/mot de passe dans ce que je pensais le mécanisme habituel de la WCF, et il ne fonctionne pas.

Donc, finalement, les questions:

  • Ai-je trompé moi-même, et j'ai besoin d'être bricoler avec les certificats SSL?
  • Si non, que dois-je faire dans WCF pour passer d'un nom d'utilisateur/mot de passe à un HTTPS webservice, hébergé par MuleSoft
    ESB? (Mule EE de Base Extensions/3.5.1, si ça peut aider).
  • Semble que le service de certificat n'est pas approuvé. Vérifiez l'url dans le navigateur et voir si c'est un certificat de confiance
  • Si c'était un problème avec le certificat, pourquoi ne vois-je pas de questions quand j'ai vue la .wsdl dans le navigateur?
  • C'est pourquoi je vous demande de vérifier avec le navigateur. SI le navigateur dit le certificat, il est ok, que le problème devrait être sur le côté application. L'ouverture du tunnel ssl est fait avant l'authentification du client, de sorte que vous devriez vous concentrer sur que pour trouver le problème.
  • Lorsque je charge le service web dans un navigateur, je vois les .wsdl, et quand je l'ai Vue sur la Page d'Info, et de regarder pour le certificat, je vois "Ce certificat est OK." Alors oui, il ne ressemble à la message d'erreur est trompeur.
  • Rappelez-vous juste un problème commun. Est-il un proxy entre les deux?
  • Oui, comme je l'ai dit. Je me connecte à un serveur proxy.
  • D'une certaine manière, j'arrive à rater. Le problème, c'est le proxy. Votre navigateur traite avec le proxy correctement, mais l'application n'est pas. L'url doit pointer le service. Lorsque l'application tente de sortir, le proxy demande les informations d'identification. Il y a plusieurs façons de le faire. Vérifiez ceci: stackoverflow.com/questions/1938990/...
  • Laissez-nous continuer cette discussion dans le chat.
  • J'ai essayé les suggestions de stackoverflow.com/questions/1938990/..., et j'ai une erreur: "Le ServicePointManager ne prend pas en charge les proxys avec le https régime.". La navigation autour pour le message d'erreur, je pense que nous avons une confusion sur les multiples utilisations du mot "proxy". Je n'ai pas de proxy sur ma fin, que le trafic sortant passe par, le client dispose d'un proxy sur son. Je ne suis pas sûr que côté client, la configuration du proxy est approprié.
  • Oui, le proxy mot était utilisé pour désigner des concepts différents. Le serveur proxy sur le réseau du client n'est pas un problème. Puisque vous n'avez pas un serveur proxy sur votre réseau d'entreprise, vous n'avez pas besoin d'une configuration de proxy. Votre dernière erreur de points à d'autres type de problème. Quel cadre utilisez-vous?
  • Je suis l'aide de VS2013, et WCF. Le client est à l'aide de MuleSoft. Je suis en train de penser cela pourrait être un problème à la fin du serveur.
  • u ne résoudre ce problème ? j'ai pas trop

InformationsquelleAutor Jeff Dege | 2014-10-01