none
WINHTTP_OPTION_SERVER_CERT_CONTEXT sur Windows 7 RRS feed

  • Question

  • Bonjour,

    J'ai développé un client Http avec WinHttp qui fonctionnait parfaitement sur windows XP et VISTA.
    Depuis Windows 7 j'ai un problème lorsque j'utilise WinHttpQueryOption avec WINHTTP_OPTION_SERVER_CERT_CONTEXT
    la méthode me renvoie systématiquement 'false' et malgré la présence de tous les certificats.
    Voici une partie du code:

    ....

    if( bSsl)
    {
     DWORD dwFlags = SECURITY_FLAG_IGNORE_CERT_CN_INVALID|
      SECURITY_FLAG_IGNORE_CERT_DATE_INVALID|
      SECURITY_FLAG_IGNORE_UNKNOWN_CA;

     // important - set security to ignore 'bad' certs
     BOOL bRet = WinHttpSetOption(
      m_hRequest,
      WINHTTP_OPTION_SECURITY_FLAGS,
      &dwFlags,
      sizeof(DWORD)
      );

     if( !bRet )
     {
      /// gestion de l'erreur
     }

     // get cert
     DWORD dwCsz = sizeof (PCCERT_CONTEXT);
     BOOL bSuccess = WinHttpQueryOption( m_hRequest,
      WINHTTP_OPTION_SERVER_CERT_CONTEXT,
      &m_gcertContext,
      &dwCsz);
     if( !bSuccess)
     {
      /// gestion de l'erreur
      -----> Windows 7 entre systématiquement ici
     }
     m_bCertificate = true;
    }

    Je ne vois pas d'où peut provenir le problème...

    Merci pour votre aide

    Philippe T.

     

     

    • Modifié PhilT85 lundi 30 août 2010 11:54 Code plus clair
    lundi 30 août 2010 11:39

Toutes les réponses

  • Bonjour,

    Que retourne la fonction GetLastError() ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 30 août 2010 12:23
    Modérateur
  • Elle retourne l'erreur 12019 (2EF3)

    apparement le Handle de la requête n'est pas dans l'état attendu, mais je n'ai pas cette erreur sous XP/Vista.

    Cordialement,

    Philippe T.

    lundi 30 août 2010 12:47
  • Question subsidiaire:

    Suis-je obligé de faire appel la méthode WinHttpQueryOption avec  WINHTTP_OPTION_SERVER_CERT_CONTEXT ?

    Si je passe outre cet appel, mon client fonctionne correctement.

    Merci de votre aide,

    Cordialement,


    Philippe Thomann ---------------- Analyste-Developpeur R&D Sage activité Ciel
    lundi 30 août 2010 14:34
  • Si vous ne voulez pas vérifier le certificat du server, oui cela ne sert à rien.
    Paul Bacelar, Ex - MVP VC++
    mardi 31 août 2010 17:36
    Modérateur
  • Merci pour cette info.

    Pour le cas de la valeur de retour différente de WinhttpQueryOptions je n'ai toujours pas trouvé.

    J'ai ajouté les certificats (alors que sur XP/Vista je n'en avais pas besoin) mais cela ne fonctionne toujours pas, windows 7 me renvoie systématiquement --> bSuccess = false.

    J'ai changé mon code pour que cela fonctionne mais la raison pour laquelle cela ne marche m'est toujours inconnue.

    Cordialement,


    Philippe Thomann ---------------- Analyste-Developpeur R&D Sage activité Ciel
    mercredi 1 septembre 2010 11:54
  • Windows 7 est peut-être plus pointilleux sur les flags lors de la création de m_hRequest ?


    Paul Bacelar, Ex - MVP VC++
    mercredi 1 septembre 2010 13:56
    Modérateur
  • Est-ce que les versions de winhttp comportent des différences et si oui où puis-je les trouver?

    XP: 5.1.2600.5869
    VISTA: 6.0.6002.18096

    et

    Seven: 6.1.7600.16385

    Merci,


    Philippe Thomann ---------------- Analyste-Developpeur R&D Sage activité Ciel
    mercredi 1 septembre 2010 15:34