IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C# 2.0] Authentification HTTPS


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut [C# 2.0] Authentification HTTPS
    Bonjour à tous,

    Mon application doit se connecter à un serveur en mode HTTPS. L'authentification se fait sur la base des clés (au lieu d'un username/password).

    A priori je ne peux utiliser WebRequest car Credentials ne gère que l'authentification profil / mot de passe.

    J'ai donc essayé d'utiliser un TcpClient avec un SslStream mais j'obtiens à chaque fois l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The message received was unexpected or badly formatted
    Je n'arrive pas à comprendre... même en ajoutant le callback pour vérification des certificats lors de l'appel à AuthenticateAsClient, même résultat.
    Je précise que j'arrive à me connecter à un https (par ex, https://addons.mozilla.org/ sans pb avec un HttpWebRequest )

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
                String host = "mon_serveur";
                TcpClient tcp = new TcpClient( host, 443);
     
                if (!tcp.Connected)
                    return;
     
                SslStream ssl = new SslStream(tcp.GetStream(), false);
     
                // même comportement si j'enlève les certificats
                X509CertificateCollection certifs = new X509CertificateCollection();
                certifs.Add(new X509Certificate("mon_certif.der", "123"));
                certifs.Add(X509Certificate.CreateFromCertFile("ca.crt"));
     
                try {
                    ssl.AuthenticateAsClient(host, certifs);
                } catch (Exception ex) {
                    Console.WriteLine(ex.ToString());
                }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Après avoir suivi http://support.microsoft.com/?id=260729 pour activer les traces, il apparaît que le problème est que mon certificat local est rejeté par DotNet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The remote server has requested SSL client authentication, but no suitable client certificate could be found. An anonymous connection will be attempted. This SSL connection request may succeed or fail, depending on the server's policy settings.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Pour information, le certificat du poste client (donc celui où est placé mon application) doit être importé via un fichier au format PFX dans les certificats Personnel de Windows pour que mon application DotNet fonctionne.

    Mon but est de maintenant s'affranchir de cet étape ou mieux, de pouvoir utiliser HttpWebRequest pour ne pas avoir à gérer le protocole http moi même

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut HttpWebRequest & https
    Bonjour,

    As-tu trouvé une solution à ton problème ?
    Je dois me connecter à un site en https avec un certificat et j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La demande a été abandonnée : Impossible de créer un canal sécurisé SSL/TLS
    Voici le Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
     
                // Handle any certificate errors on the certificate from the server.
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
     
                X509Certificate x509 = X509Certificate.CreateFromCertFile(@"C:\Tests\test.cer");
     
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://adresse...");
                req.ClientCertificates.Add(x509);
                req.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
     
                req.Method = "POST";
                req.ContentType ="application/x-www-form-urlencoded";
    ...
     Stream postStream = req.GetRequestStream(); ---> BOOM BADABOUM
    Avez-vious une idée s'il vous plait ?

    Merci

Discussions similaires

  1. authentification http au demarrage de windows
    Par kesiahlex dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 13/07/2006, 13h41
  2. Authentification HTTP sur 2 serveurs
    Par mecha dans le forum Apache
    Réponses: 5
    Dernier message: 23/06/2006, 17h21
  3. probleme authentification http
    Par Langly dans le forum Apache
    Réponses: 2
    Dernier message: 23/06/2006, 14h39
  4. Réponses: 10
    Dernier message: 06/12/2005, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo