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

Composants VCL Delphi Discussion :

Certificat HTTPS avec indy+OpenSSL


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut Certificat HTTPS avec indy+OpenSSL
    Salut à tous,
    Voilà ma situation, je voudrais créer un programme qui communique en https avec un serveur. (pour échanger de données).
    J'ai donc utilisé un TIdHTTP avec un TIdSSLIOHandlerSocketOpenSSL. Ma connexion avec le serveur fonctionne. Les données transitent bien .
    Le problème est que je n'arrive pas à comprendre les étapes d'acceptation du certificat par mon programme client:
    Le client établie toujours la connexion et je ne sais pas où est enregistré le certificat (dans un keyStore?)
    Si quelqu'un connait le mode de fonctionnement d'Indy (a moins que ça soit géré directement par les librairies OpenSSL ) je suis preneur !!

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 705
    Points : 25 575
    Points
    25 575
    Par défaut
    HTTPS renouvelle sa clé cliente à chaque connexion ?!
    Sinon voir aussi TIdConnectionInterceptOpenSSL qui te permet de gérer ton certificat X509
    Tu n'es pas censé devoir (voire même pouvoir) récuperer le certificat en cours ?!
    Cela serait une faille de sécurité !

    Par contre, selon les serveurs, le client doit avoir aussi son propre certificat (remplace l'authentification basique) installé dans ton navigateur (la carte CPS pour les médecins contient un X509 qui les authentifie car le lecteur de carte est déclaré comme périphérique de certificat)

    Tu aussi le gérer avec Indy en spécifiant le certificat dans TIdServerIOHandlerSSLOpenSSL "SSLOptions.CertFile"

    Peut-être que ce que tu cherches c'est OnVerifyPeer (qui te fournit le TIdX509 correspond à la connexion en cours) et OnGetPassword

    Il faut souvent lire l'aide de Indy 9 en HLP pour retrouver ce qui manque dans l'Aide Indy 10 des BSD200x, et parfois c'est même tout à fait compatible !




    Sinon, cherche sur le forum "HTTPS indy" dans la section Delphi, il y a déjà de nombreux exemple d'utilisation d'un TIdHTTP + TIdSSLIOHandlerSocket
    Voir aussi la FAQ Comment utiliser le SSL avec Indy ?
    pour obtenir ssleay32.dll et libeay32.dll

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    Merci pour la réponse
    -> Pour préciser mon besoin: c'est une application a laquelle on peut aussi se connecter via un browser. Quand on s'y connecte, le browser lève une alerte, affiche le certificat et nous demande si on veut continuer ou pas la session. Normal.
    Du coup je ne sais pas si on peut (doit?) avoir un fonctionnement isoFonctionnel? Genre un prompt qui affiche le nom de l'éditeur du certificat pour savoir si on accepte la connexion ou pas (tjrs coté client). Après je ne suis pas expert en https. Est-ce utile d'avoir ce fonctionnement dans un programme delphi?

    "Tu aussi le gérer avec Indy en spécifiant le certificat dans TIdServerIOHandlerSSLOpenSSL "SSLOptions.CertFile""
    ->Il me semblait que cette propriété devait être renseignée seulement pour l'application serveur? vu qu'à la première connexion je n'ai pas le certificat. non?

    "Peut-être que ce que tu cherches c'est OnVerifyPeer (qui te fournit le TIdX509 correspond à la connexion en cours) et OnGetPassword "
    ->J'ai effectivement commence à creusé de ce coté, mais je n'arrive pas à répondre à mon besoin dans cet évènement.(je peux refuser la connexion, mais c'est la condition de ce refus que je ne maitrise pas :-s)

    -> Je vais creuser du coté de TIdConnectionInterceptOpenSSL voir ce que je peux en tirer.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 705
    Points : 25 575
    Points
    25 575
    Par défaut
    Citation Envoyé par Gwenou Voir le message
    TIdServerIOHandlerSSLOpenSSL "SSLOptions.CertFile"
    ->Il me semblait que cette propriété devait être renseignée seulement pour l'application serveur?
    Tout à fait, je parlais bien des SSLOptions du TIdSSLIOHandlerSocketOpenSSL (ou TIdSSLIOHandlerSocket) si tu veux utiliser un certificat pour authenfifier le client à la place authentification basic !
    Tu y mets tes fichiers KEY et CRT qui identifie le client !
    Mais ce n'est pas ta problèmatique !

    Toi, tu veux juste être sur que c'est le bon serveur !
    Ton Certificat de ton Server n'est pas certifié par un Organisme reconnu comme VeriSign, CAcert, GuardTrust, Infrasec d'où le prompt du navigateur car il ne peut pas garantir que le site accédé correspond vraiment au certificat

    Si c'est ton server et ton client qui dialogue, je ne vois pas l'intérêt d'afficher un prompt pour un Certificat non certifié !

    Je t'avoue, je n'ai jamais cherché à controler, déjà parce que je n'utilisais pas Indy mais des WebServices avec des THTTRIO avec une petite authentification basic, je n'ai jamais vérifié mais l'URL spécifiait le protocole HTTPS, ne m'occupant pas des serveurs, je n'ai jamais vérifié si au final, c'était vraiment du HTTPS puisqu'en théorie THTTRIO ne gère pas le HTTPS !
    Et pour les clients parano, on utilisait un Tunnel SSH + PortFowarding + HTTP

    Pour info : TIdSSLIOHandlerSocketOpenSSL = Indy 10, c'est TIdSSLIOHandlerSocket en Indy 9

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    Effectivement, en cherchant un peu je vois que l'étape au dessus est la double authentification (Serveur & client merci Wikipedia) ce qui est trop sécurisé par rapport à mon besoin.
    Sinon je n'ai pas réussi à implémenter TIdConnectionInterceptOpenSSL car on dirait que ma version d'indy ne le connait pas?
    Enfin l'évènement VerifyPeer ne contient que des infos cryptées (Certificate: TIdX509) donc impasse... Je vais aller voir du coté d'OpenSSL si ils parlent de la gestion des certificats...
    Je laisse le sujet en stand-by si un aficionados du composant indy connait la réponse ;-)

Discussions similaires

  1. [WS Rest] Communiquer en HTTPS avec Certificat
    Par PP(Team) dans le forum Android
    Réponses: 0
    Dernier message: 07/12/2012, 13h44
  2. Réponses: 9
    Dernier message: 07/09/2011, 16h05
  3. [Lazarus] [Mac OS X] Problème de téléchargement HTTP avec Indy
    Par sinfoni dans le forum Lazarus
    Réponses: 0
    Dernier message: 13/04/2011, 19h34
  4. Réponses: 0
    Dernier message: 24/12/2009, 00h21
  5. Prism et https avec certificat auto signé
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 23/03/2008, 11h46

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