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_TLSv1
SOAP_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?
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. –