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 :

Mysql en SSL


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Par défaut Mysql en SSL
    Bonjour à tous.

    Voici quelque temps que je développe une application en delphi qui communique avec un serveur mysql via mysql.pas. Tout fonctionne très bien mais en me penchant un peu plus sur les communications, je me suis aperçu en sniffant mes trames réseaux que les coms mysql (requete principalement) circule en clair sur le réseaux ce qui évidement me pose un gros problème de sécurité.

    Je me suis donc renseigner via le les composants Indy10 et principalement le composant IdSSLIOHandlerSocketOpenSSL. Seulement, on ne peut lier ce composant qu'au composant Indy via le IOHandler or moi j'aimerais le lier à mon unité mysql.pas afin d'obtenir une connexion mysql sécurisé en ssl. Si quelqu'un à ne serait-ce qu'une piste je suis preneur !

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par yvonic2010 Voir le message
    Bonjour à tous.

    Voici quelque temps que je développe une application en delphi qui communique avec un serveur mysql via mysql.pas. Tout fonctionne très bien mais en me penchant un peu plus sur les communications, je me suis aperçu en sniffant mes trames réseaux que les coms mysql (requete principalement) circule en clair sur le réseaux ce qui évidement me pose un gros problème de sécurité.

    Je me suis donc renseigner via le les composants Indy10 et principalement le composant IdSSLIOHandlerSocketOpenSSL. Seulement, on ne peut lier ce composant qu'au composant Indy via le IOHandler or moi j'aimerais le lier à mon unité mysql.pas afin d'obtenir une connexion mysql sécurisé en ssl. Si quelqu'un à ne serait-ce qu'une piste je suis preneur !

    Merci d'avance pour votre aide !
    théoriquement les requêtes sont GZIPée...ce qui n'est pas un cryptage je te l'accord, par contre le mot de passe lui est crypté.

    cependant, Indy n'a rien à voir dans l'histoire, il faut déjà que le serveur accepte les connexions SSL, et j'imagine que la DLL est capable de dialoguer en SSL également.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Par défaut
    En effet le mot de passe est crypté, mais il n'empêche qu'on voit exactement quel requête fait quoi dans quel table etc... Pour une injection sql derrière c'est carrément porte ouverte...

    La dll utilisé, c'est la classique libMysql.dll, je vais me renseigner pour voir si elle intègre déjà le ssl, en tout cas merci pour votre réponse

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Par défaut
    Je continu avec mon histoire, je me suis penché sur la question et voila le soucis :

    Dans mysql.pas, nous avons ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        {$IFDEF HAVE_OPENSSL}
        assign_proc(@mysql_ssl_set, 'mysql_ssl_set');
        assign_proc(@mysql_ssl_cipher, 'mysql_ssl_cipher');
        assign_proc(@mysql_ssl_clear, 'mysql_ssl_clear');
        {$ENDIF}
    Seulement, je ne comprends pas pourquoi il ne trouve jamais ces fonctions. Comment peut on savoir a quoi correspond ce HAVE_OPENSSL ? J'ai beau l'avoir installé, avoir chargé les 2 DLL qui sont marqué sur internet pour l'utilisation d'open SSL avec delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LoadLibrary(PChar('libeay32.dll'));
    LoadLibrary(PChar('libssl32.dll'));
    LoadLibrary(PChar('ssleay32.dll'));
    {$IFDEF HAVE_OPENSSL}
    ShowMessage('plop');
    {$ENDIF}
    Le 'plop' n'apparait jamais... je seche vraiment la.

  5. #5
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    dans les options du projet - compilateur Delphi - Définitions conditionnelles tu rajoute HAVE_OPENSSL
    et avant mysql_real_connect tu utilise mysql_ssl_set pour spécifier le certificat.
    c'est théorique j'ai pas essayé.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    dans les options du projet - compilateur Delphi - Définitions conditionnelles tu rajoute HAVE_OPENSSL
    et avant mysql_real_connect tu utilise mysql_ssl_set pour spécifier le certificat.
    c'est théorique j'ai pas essayé.
    Merci beaucoup pour votre réponse, la manip du HAVE_OPENSSL fonctionne parfaitement, en revanche pour le SSL c'est toujours pas ca, je vous montre mon code des fois que cela vous aide un peu plus :

    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
    function requetesql(const requete:string):PMYSQL_ROW;
    begin
    Conn := mysql_init(nil);
     
      if Conn = nil then begin ShowMessage('Couldn''t init PMYSQL object');
       exit;
      end;
     
       mysql_ssl_set(conn, 'key.pem', 'cert.pem', 'ca-cert.pem', nil);
     
     
     if mysql_real_connect(Conn, pChar(MyHost), pChar(MyUser), pChar(MyPass),pchar(Mydbname), 0, nil, 0) = nil
     
      then begin
       Showmessage('erreur de connexion');
       exit;
      end;
     
       if mysql_query(conn,pChar(requete)) <> 0 then begin
      showmessage('impossible d''envoyer la requete');
      exit;
     end;
     
       res_set:=mysql_store_result(conn);
    avec les valeurs de variable qui vont bien evidement, malgré cela, j'ai toujours un "erreur de connexion" (donc le mysql_real_connect ne passe pas), la base est bien ssl car quand je le fait dans un shell sur un serveur distant, cette ligne :
    mysql -u Watch -p --ssl-ca=/USB/ca-cert.pem --ssl-cert=/USB/cert.pem --ssl-key=/USB/key.pem -h 91.121.XX.XX

    fonctionne tres bien, le problème viens donc bien de delphi... (je précise qu'en connexion normal, ce code fonctionne parfaitement évidement sans la requête mysql_ssl_set)

Discussions similaires

  1. [MySQL] MYSQL et SSL
    Par tiamat59 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/03/2011, 09h13
  2. [MySQL] PHP et MySQL, cryptage SSL
    Par totosh dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 31/01/2011, 14h36
  3. Installer la gem mysql sans ssl
    Par Baptiste Wicht dans le forum Ruby
    Réponses: 0
    Dernier message: 01/02/2010, 11h32
  4. Connection à mysql via ssl
    Par huit_six dans le forum JDBC
    Réponses: 2
    Dernier message: 07/08/2009, 13h26
  5. Replication Mysql via SSL HELP
    Par snach dans le forum Administration
    Réponses: 6
    Dernier message: 04/09/2007, 09h51

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