none
SslPolicyErrors j'ai uen valeur qui ne fait pas partie du enum

    Question

  • Bonjour

    Je tente de mettre au point une communication TCP SSL avec une autre machine. Ca fonctionne à  merveille entre mon appli iet un serveur que j'ai créé en c# également.

    Mon problème apparait ensuite pour élaborer un serveur qui n'est pas en c# lui. J'obtiens une erreur

    "Le certificat distant n'est pas valide selon la procédure de validation."

    Pour aider au diagnostic je cherche à voir plus en détail ce qui ne va pas dans cette fonction de contrôle du certificat

    public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {
                if (sslPolicyErrors == SslPolicyErrors.None)
                    return true;
    
                            // Do not allow this client to communicate with unauthenticated servers.
                return false;

    Si j'ajoute le test des 3 autres valeurs possibles tel que décrit ici

    https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=FR-FR&k=k(System.Net.Security.SslPolicyErrors);k(TargetFrameworkMoniker-.NETFramework

    en ajoutant ceci

      if (sslPolicyErrors == SslPolicyErrors.None)
                    return true;
    
                int toto = 0;
    
                if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)
                    toto = 2;
    
    
                if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch)
                    toto = 3;
    
                if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNotAvailable)
                    toto = 4;
    
                if (toto > 0) return true;
    
    
    
    
    
    

    je m’arrête dans aucun des 4 tests possibles !!!

    Du coup je fais comment pour connaitre la cause de l’échec ?

    Merci par avance

          

    mercredi 31 août 2016 13:55

Toutes les réponses

  • Bonjour,

    La raison peut être:
    - Le certificat est self-sighed et n'est pas ajouté comme trusted certificate.
    - Le certificat est expiré.
    - Le certificat est signé par root certificate qui n'est pas installé de votre machine.
    - Une liste de révocation est recherchée, mais ne peut pas être trouvée/utilisée.
    Avez-vous essayé de recréer le certificat du serveur?
    Merci de nous tenir au courant.

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.



    jeudi 1 septembre 2016 11:12
    Modérateur
  • Bonjour

    "Avez-vous essayé de recréer le certificat du serveur?" Je ne comprends pas ce que ça signifie.

    Pour le reste ce qui m’intrigue c'est que l'on teste la validité d'un certificat en regardant si

    pour moi il serait logique ques slPolicyErrorsne puisse être égal qu'à une seul des 4 valeurs prévues dans l'enum (None, RemoteCertificateChainErrors,RemoteCertificateNameMismatch et RemoteCertificateNotAvailable)

    or ce n'est pas le cas, on peut être dans aucuns de ces cas là !

    pourquoi mettre un enum s'il ne couvre pas tous les cas ?
    et  du coup, comment connaitre la cause du problème ?

    Merci


    jeudi 1 septembre 2016 11:56