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

XML/XSL et SOAP Discussion :

webServer GSOAP SSL


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut webServer GSOAP SSL
    Bonjour

    J'essaye de créer un WebServer avec gsoap. En utilisant http ca marche correctement.
    J'essaye de passer sur https en incluant OpenSSL,
    Mais la plus rien ne marche. J'ai cru comprendre qu'il fallait gerer des certificats. Mais je ne m'en sort pas.
    Quelqu'un aurait une idée sur ce que je dois faire?
    Voici mon main
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    int main(int argc, char *argv[])
     {
        int m, s;
        struct soap soap, *tsoap;
        soap_ssl_init(); /* init OpenSSL (just once) */ 
        soap_init(&soap);
        if (soap_ssl_server_context(&soap,
            SOAP_SSL_NO_AUTHENTICATION,
            NULL, /* keyfile: required when server must authenticate to clients (see SSL docs on how to obtain this file) */
            NULL, /* password to read the key file (not used with GNUTLS) */
            NULL, /* optional cacert file to store trusted certificates */
            NULL, /* optional capath to directory with trusted certificates */
            NULL, /* DH file name or DH key len bits (minimum is 512, e.g. "512") to generate DH param, if NULL use RSA */
            NULL, /* if randfile!=NULL: use a file with random data to seed randomness */
            NULL /* optional server identification to enable SSL session cache (must be a unique name) */    ))
        {
            soap_print_fault(&soap, stderr);
            exit(1);
        }
        m = soap_bind(&soap, "192.168.1.104", 5880, 100); // use port 18000
        if (m < 0)
        {
            soap_print_fault(&soap, stderr);
            exit(1);
        }
        fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
        for (int i = 1; ; i++)
        {
            s = soap_accept(&soap);
            s = soap_ssl_accept(&soap);
            fprintf(stderr, "Socket connection successful: slave socket = %d\n", s);
            if (s < 0)
            {
                soap_print_fault(&soap, stderr);
                break;
            }
            fprintf(stderr, "%d: accepted connection from IP=%d.%d.%d.%d socket=%d \n", i,
                (soap.ip >> 24)&0xFF, (soap.ip >> 16)&0xFF, (soap.ip >> 8)&0xFF, soap.ip&0xFF, s);
            tsoap = soap_copy(&soap); /* should call soap_ssl_accept on a copy */
            if (!tsoap)
                break;
     
            if (soap_serve(&soap) != SOAP_OK) // process RPC request
            {
                fmo_soap_print_fault(&soap, stderr); // print error
                //fmo_soap_print_fault_location(&soap, stderr); // print error
            }                        
            fprintf(stderr, "request served\n");
        }
        soap_done(&soap); /* deallocates SSL context */
        return 0;
    }
    Thx in advance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    Salut,

    Voila qui pourra surment te donner des renseignement sur comment générer ton certificat, il te faudra surment changer les chemin pour l'enregistrement du crt et de la clé privée.

    ici
    Linux because rebooting is just for adding medias

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Bonjour

    Merci pour la reponse.
    Après un jour et nuit, j'ai enfin trouve.

    Pour ceux que ca peut aider,
    mon main ressemble a cela:
    Il faut spécifier le fichier keyfile ainsi que le password correspondant
    Pour la génération du certificat j ai suivi le lien

    http://www.openssl.org/docs/HOWTO/certificates.txt

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    void *process_request(void *soap)
    {
      soap_serve((struct soap*)soap);
      soap_destroy((struct soap*)soap); /* for C++ */
      soap_end((struct soap*)soap);
      soap_done((struct soap*)soap);
      free(soap);
      return NULL;
    }
     
    int main(int argc, char *argv[])
    {
        int m, s;
    //    pthread_t tid;
        struct soap soap, *tsoap;
        soap_ssl_init();
        soap_init(&soap);
     
        if (soap_ssl_server_context(&soap,
            SOAP_SSL_NO_AUTHENTICATION,
            "cacert.pem", /* keyfile: required when server must authenticate to clients (see SSL docs on how to obtain this file) */
            "password", /* password to read the key file (not used with GNUTLS) */
            NULL, /* optional cacert file to store trusted certificates */
            NULL, /* optional capath to directory with trusted certificates */
            NULL, /* DH file name or DH key len bits (minimum is 512, e.g. "512") to generate DH param, if NULL use RSA */
            NULL, /* if randfile!=NULL: use a file with random data to seed randomness */
            NULL /* optional server identification to enable SSL session cache (must be a unique name) */    ))
        {
            soap_print_fault(&soap, stderr);
            exit(1);
        }
        m = soap_bind(&soap, "192.168.1.104", 5880, 100); // use port 18000
        if (m < 0)
        {
            soap_print_fault(&soap, stderr);
            exit(1);
        }
        fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
        for (int i = 1; ; i++)
        {
            s = soap_accept(&soap);
            if (s < 0)
            {
                if (soap.errnum)
                {
                    soap_print_fault(&soap, stderr);
                }
                else
                {
                    fprintf(stderr, "Server timed out\n");
                }
                break;
            }
            fprintf(stderr, "Socket %d connection from IP %d.%d.%d.%d\n", s,
                (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
            tsoap = soap_copy(&soap);
            if (!tsoap)
            { 
                soap_closesock(&soap);
                continue;
            }
            if (soap_ssl_accept(tsoap))
            {
                soap_print_fault(tsoap, stderr);
                fprintf(stderr, "SSL request failed, continue with next call...\n");
                soap_end(tsoap);
                soap_done(tsoap);
                free(tsoap);
                continue;
            }
            process_request((void*)tsoap);
            fprintf(stderr, "request served\n");
        }
        soap_end(&soap);
        soap_done(&soap); /* MUST call before CRYPTO_thread_cleanup */
        return 0;
    }

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

Discussions similaires

  1. client Gsoap avec Https (SSL)
    Par Yiempia dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 04/03/2011, 14h40
  2. [SSL]Communication avec un serveur en https
    Par menon dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 04/09/2003, 16h38
  3. Manipuler JAVA et SSL ?
    Par jah dans le forum Sécurité
    Réponses: 6
    Dernier message: 05/05/2003, 00h30
  4. Quelle est la fiabilité du protocole SSL ?
    Par Anonymous dans le forum Développement
    Réponses: 5
    Dernier message: 05/09/2002, 13h31

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