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

Bibliothèques C++ Discussion :

Client HTTPS poco


Sujet :

Bibliothèques C++

  1. #1
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut Client HTTPS poco
    Bonjour,

    j'ai quelques soucis avec un client https :

    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
    20
    21
    22
    23
    24
    25
     
    const std::string& privateKeyFile =  "/etc/ssl/private/users/rainbow9/rainbow9.key";
    const std::string& certificateFile = "/etc/ssl/private/users/rainbow9/rainbow9.crt";
    const std::string& caLocation = 	 "/etc/ssl/private/caSwiss.crt";
     
    //std::string
    //Poco::URI uri("https://10.110.0.106", "8181");
    try
    {
           Poco::Net::initializeSSL();
     
    	Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> pAcceptCertHandler = new Poco::Net::AcceptCertificateHandler(true);
    	Poco::Net::Context::Ptr pContext = new Poco::Net::Context(Poco::Net::Context::TLSV1_CLIENT_USE, privateKeyFile,
    		                                       certificateFile, caLocation,Poco::Net::Context::VERIFY_RELAXED,
    		                                       9, true, "ALL:");
     
    	Poco::Net::SSLManager::instance().initializeClient(NULL, pAcceptCertHandler, pContext);
    	Poco::Net::HTTPSClientSession theSess("10.110.0.106", 8181);
     
    	// Create the HTTP request object
    	Poco::Net::HTTPRequest request("POST", "https://10.110.0.106:8181","1.1");
    	// Send the request
    	std::cout << "Debug point A" << std::endl;
     
    	std::ostream& aStream = theSess.sendRequest(request); // Erreur envoie de la requête.

    A l'exécution il me renvoie l'erreur :

    certificate validation error: Unacceptable certificate from 10.110.0.106: application verification failure

    J'ai tester mes certificats ils ont l'air fonctionnel :

    - Test avec openssl
    - Test depuis un navigateur

    Si je met le path d'un autre certificat qui n'est pas la bonne CA, j'ai le message suivant :

    Exception caught while attempting to connect.
    SSL Exception: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
    Du coup je suis un peu perdu, et vu le peu de documentation et d'exemple sur poco c'est pas évident...

    Le handshake tls se passe bien, il y a même les deux change cipher spec qui définissent la fin de la connexion non chiffré, mais ensuite mon client envoie un reset au serveur...

    Merci de votre aide

  2. #2
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut
    Chose bizarre, en faisant un strace pour voir ce que faisant mon soft, je remarque qu'il fait une série de requête dns.

    Il va donc chercher des informations DNS un petit wireshark, et on voit qu'il cherche le domaine rainbow.

    Sachant que rainbow est le common name de mon certificat et qu'il devrait-être 10.110.0.106 ou l'url, cela explique mon bug, j'ai complètement oublié de créer un certificat valide pour mon url...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Web Service] Api Client HTTP
    Par ksven dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/02/2009, 16h43
  2. Probleme "client" HTTP
    Par chuko dans le forum C
    Réponses: 5
    Dernier message: 13/02/2009, 00h54
  3. Client HTTPS en C
    Par DomiPi dans le forum Linux
    Réponses: 1
    Dernier message: 20/11/2008, 12h06
  4. Redirection spécifques à un client HTTP
    Par Oscar Hiboux dans le forum Apache
    Réponses: 1
    Dernier message: 21/11/2006, 20h13
  5. Client HTTP
    Par bruno-travail dans le forum C++
    Réponses: 4
    Dernier message: 11/04/2006, 14h54

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