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

Delphi Discussion :

[INDY] IdHttp et SSL


Sujet :

Delphi

  1. #1
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut [INDY] IdHttp et SSL
    Je dois envoyer des informations par une méthode Post sur un lien SSL.

    si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       with IdHTTP do
        begin
          try
            Request.ContentType := 'application/x-www-form-urlencoded';
    //        Connect;
            Post(MonUrl,Maliste);
          Except
            Result := False;
          end;
        end;
    J'ai une erreur IoHandler. En réflechissant un peu, j'ai vu qu'il y avait un composant IdSSLIOHandlerSocketOpenSSL.
    Problème, c'est que je vois pas ce que je pourrais lui indiquer comme information afin d'envoyer les informations sur l'url.

    Est ce que quelqu'un a déjà utilisé ce composant ? a moins qu'il y ai un autre ContentType qui permet de le faire ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Avant qu'il passe en deuxieme page ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    *Bump*

    Je remonte ce très vieux topic ^^

    Je me suis remis à rechercher comment faire fonctionner du Https avec une applie delphi et la je rencontre un problème.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    var
      lst,lstResult : TStringList;
      sUrl : String;
    begin
      lst := TStringList.Create;
      lstResult := TStringList.Create;
     
      sUrl := 'Https://www.MonSite.com/MaPage.php';
      lst.add('Login=blabla');
     
      try
        With IdSSLIOHandlerSocketOpenSSL1 do
        begin
          SSLOptions.RootCertFile := 'cert.pem';
          Host := sUrl;
          Port := 443;
        end;
     
        With IdHTTP1 do
        begin
          Request.ContentType := 'application/x-www-form-urlencoded';
          if not Connected then
            connect;
     
          lstResult.Text := Post(sUrl,lst);
        end;
     
        lstResult.SaveToFile('test.txt');
        WebBrowser1.Navigate('test.txt');
      finally
        lst.Free;
        lstResult.Free;
      end;
    Quand j'exécute cette portion de code, Indy me retourne sans cesse qu'il ne peut pas charger les dll.

    J'ai tout essayé avec ces dll (libeay32.dll et ssleay32.dll) :
    - les mettre dans le répertoire de l'application
    - les mettre dans le répertoire system32 de windows

    Mais rien n'y fait j'ai toujours le message : "Could not load SSL library".

    J'ai rechercher sur google mais mis a par des sites en Allemand,Espagnol, chinois, etc ... (langues que je ne connais pas), je n'ai rien trouvé de concluant en francais ni anglais.

    Est ce que quelqu'un a rencontré ce problème et a pu le régler ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    Bonjour,

    Je "déterre" ce topic car mon problème est lié a IdHttp et a aux IdSSLIOHandlerSocketOpenSSL, je crois être au bon endroit ( je suis débutant alors soyez indulgent s'il vous plait ... )

    L'objectif de mon programme est de télécharger un fichier qui se trouve sur un serveur sécurisé (https). Voici mon programme de test :

    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Fichier: TFileStream;
    begin
      With IdSSLIOHandlerSocketOpenSSL1 do
      Begin
        SSLOptions.RootCertFile := 'RootCert.cer';
        SSLOptions.CertFile := 'Cert.cer';
        Port := 443;
      end;
     
      try
        Begin
          Fichier := TFileStream.Create('lefichier',FmCreate);
          IdHTTP1.Get('https://login:pass@www.lesite.com/lefichier',Fichier);
          Fichier.Free;
        end;
        except
        showmessage('Erreur');
      end;
    end;
    J'ai en effet copié en grande partie le code de Malatar

    Une erreur se produit lors de la connection du type EIdOSSLConnectError "Error connecting with SSL"

    J'ai suivi à la lettre les recommandations de Malatar sur ce topic : http://www.developpez.net/forums/sho...10&postcount=2

    Configuration de devellopement : Delphi 5 et Indy 10.0.75

    Je me posait donc plusieurs questions :

    1 - Ai-je les bons contrats ?
    2 - Je n'ai pas encore le fichier clé (KeyFile) mais je me demandais si il était possible de le récupérer via la transaction ?
    3 - Est-ce que la clé existe dans les contrats de mon navigateur ?
    4 - Ou doit-je me résigné a demandé a l'hébèrgeur du site en question ?

    Merci d'avance

    PS: A quand une mise a jour de la FAQ a ce sujet ???

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par Alexandre G
    PS: A quand une mise a jour de la FAQ a ce sujet ???
    A la prochaine fournée

    Sinon j'ai un peu mieux compris le fonctionnement du SSL avec Indy ^^

    Voila la QR qu'il y aura dasn la tu vas voir c'est plus simple que ce que j'avais mis dans le post ^^

    Comment utiliser le SSL avec indy ?

    Il faut récupèrer les 2 DLL OpenSSL selon la version de indy que l'on utilise :

    - Indy 9 :
    http://indy.fulgan.com/SSL/

    - indy 10.1.5 : il faut les DLLs 0.98
    http://indy.fulgan.com/ZIP/
    http://www.apachefrance.com/Telechar...nSSL-0.98a.zip

    Après il suffit de poser un composant IdSSLIoHandlerOpenSll et le lier au composant Indy par le IOHandler (IdSmtp , idHttp, etc ...).

    Attention : Les DLLs doivent être dans le répertoire de l'application ou dans le répertoire System32 de Windows.
    Sinon une petite erreur que j'ai remarqué dans ton code.

    Indy ne gère pas login et mon de passe dans l'url.

    il faut ecrire de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     IdHttp1.request.Username := 'login';
     IdHttp1.request.password := 'password';
     IdHTTP1.Get('https://www.lesite.com/lefichier',Fichier);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    Merci pour la réponse

    Avec Indy 10.0.76, les DLL SSL version 0.98a ne fonctionnent pas, celles version 0.96 fonctionnent.
    J'ai déjà essayé d'installer Indy 10.1.5 mais j'ai un problème avec VCL50 qui ne peut pas être charger ( je vais fouillé le site pour voir sa ).

    Sinon question, en ne mettant seulement que le certificat RootCert.cer est-ce que la connexion et la transaction s'effectue ? Si oui, j'aimerais bien comprendre pourquoi.

    Et merci encore pour le bout de code pour le login et le mot de passe, je sais que sous un explorateur comme firefox ou i.e la connexion s'effectue, reste a tester avec indy. J'y retourne !

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par Alexandre G
    Sinon question, en ne mettant seulement que le certificat RootCert.cer est-ce que la connexion et la transaction s'effectue ? Si oui, j'aimerais bien comprendre pourquoi.
    C'est soit tous les certificats soit aucun.
    Après cela depend du site et s'ils obligent d'avoir un certificat ou non. (A ce que j'ai compris)

    Citation Envoyé par Alexandre G
    Et merci encore pour le bout de code pour le login et le mot de passe, je sais que sous un explorateur comme firefox ou i.e la connexion s'effectue, reste a tester avec indy. J'y retourne !
    Attention toute fois avec le JavaScript. Si le site/page en possède tu ne pourras plus utiliser Indy.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut Même problème
    Je cherche un implémenter openSSL dans un programme en DELPHI, pour que je puisse l'utiliser afin de passer un mot de passe à un serveur de base de données que ce soit hasher ou crypter?
    Je suis débutante avec Delphi 7 (genre 1er jour) j'aurais besoin des explications simples svp.
    Tout ce que je sais maintenant c'est que quand je me connecte via mon application à la base de données SQL ç traver d'un login et Mot de passe mes informations passent en clair et je veux qu'ils passent dans une socket SSL.
    Merci

Discussions similaires

  1. Indy - IdHTTP Erreur socket 10061
    Par Fxg dans le forum Web & réseau
    Réponses: 4
    Dernier message: 25/09/2012, 15h49
  2. [Indy 10] Serveur FTP avec SSL
    Par KarMa_CoMa dans le forum Web & réseau
    Réponses: 5
    Dernier message: 21/04/2005, 09h51
  3. Erreur de socket avec le composant Indy idHTTP
    Par Etanne dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/10/2004, 11h27
  4. [INDY] comment faire un 'POST' avec idHTTP??
    Par gamez dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/05/2004, 19h02
  5. probleme avec composant indy IDhttp
    Par ulysse66x dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 09h35

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