2016-01-13 1 views
1

J'ai un serveur qui traite les demandes de savon. Il utilise gSOAP 2.8.14. Actuellement, il autorise uniquement les connexions TLSv1. J'ai besoin de l'appliquer pour autoriser uniquement la connexion TLSv1.2.Comment imposer au serveur d'utiliser uniquement TLSv1.2?

if (soap_ssl_server_context(&soap, 
    SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION | SOAP_TLSv1, 
    keyfile,  // keyfile: required when server must authenticate to clients 
    keyfilepass, // password to read the key file 
    NULL,   // optional cacert file to store trusted certificates 
    capath,  // optional capath to directory with trusted certificates 
    dhfile,  // DH file name or DH key len bits 
    NULL,   // if randfile!=NULL: use a file with random data 
    serverId  // server identification for SSL session cache 
    )) 
    { 
    printf("SSL Failed to initialize.\n"); 
    soap_print_fault(&soap, stderr); 
    return; 
    } 

Selon gSOAP changelog, drapeaux pour TLSv1.1 et TLSv1.2 ont été ajoutés à gSOAP 2.8.24. J'ai donc mis à jour mon gSOAP avec la dernière version disponible (2.8.27). Comme cela est décrit dans la source gSOAP dans stdsoap2.h, d'utiliser uniquement TLSv1.2 je dois utiliser SOAP_TLSv1_2 drapeau:

#define SOAP_TLSv1    0x0000 /* enable TLS v1.0/1.1/1.2 only (default) */ 
#define SOAP_SSLv3_TLSv1  0x0040 /* enable SSL v3 and TLS v1.0/1.1/1.2 */ 
#define SOAP_SSLv3    0x0080 /* only SSL v3 */ 
#define SOAP_TLSv1_0   0x0100 /* only TLS v1.0 */ 
#define SOAP_TLSv1_1   0x0200 /* only TLS v1.1 */ 
#define SOAP_TLSv1_2   0x0400 /* only TLS v1.2 */ 

Je l'ai remplacé par SOAP_TLSv1SOAP_TLSv1_2 dans ma fonction soap_ssl_server_context. Mais au cours des tests, j'ai constaté que le serveur accepte toujours les requêtes via TLSv1. Donc, ma question est de savoir comment forcer le serveur à traiter les demandes de savon uniquement sur TLSv1.2?

+0

Peut-être que le serveur ne supporte pas 'TLSv1.2'. Testez-le avec openssl: 'openssl s_client -showcerts -tls1_2 -connect [votre_hôte]: [port]' et affichez-le ici. –

Répondre

1

Pour forcer la restriction TLS TLSv1.2 uniquement avec gSOAP, vous aurez besoin:

  • OpenSSL 1.0.1 ou version ultérieure (sinon vous pouvez revenir à défaut SSLv3/TLS);
  • Il est recommandé de mettre à niveau vers la version 2.8.27 ou ultérieure de gSOAP.

Avec gsoap 02/08/27, utilisez l'option SOAP_TLSv1_2 pour régler la soap_ssl_client_context() et soap_ssl_server_context(). J'ai trouvé la réponse à http://www.genivia.com/tutorials.html