OVH Community, votre nouvel espace communautaire.

SSL : handshake failure avec adresses locales


Punkapoule
29/07/2016, 19h04
Bonjour,
(id : tg5884_ovh, hébergement mutualisé 60gp)

j'utilise deux plugins (assez populaires) sous Wordpress : Broken Link Checker, ainsi que WP Backup.
Depuis que j'ai changé mes configurations (et entrées des bases de données) pour forcer le HTTPS, tout marche bien, sauf un problème dans ces deux plugins.

J'ai donc dépiauté le code, réalisé de nombreux tests, fouillé documentation, forums, etc. Et enfin testé depuis d'autres hébergement qu'OVH.
Bref, sans plus attendre, voici ma conclusion :
--> les appels CURL via PHP échouent chez OVH lorsque l'adresse (scheme = HTTPS) appartient au même site / site sur même hébergement / éventuellement sur même cluster.

Précisément, l'erreur retournée (35) est : 'error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol'
Elle semble assez fréquente, rencontrée par pas mal de monde sur les forums, et j'ai eu la puce à l'oreille en constatant qu'ils étaient tous chez OVH (m'enfin, qui ne l'est pas ? ;p)

Exemple de code (PHP) récalcitrant :
Code PHP:
$ch curl_init();

// pour sorties
curl_setopt($chCURLOPT_VERBOSEtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

// exécution d'une tâche
curl_setopt($chCURLOPT_URL$url);
curl_exec($ch);

// récupération des infos
$ret_info curl_getinfo($ch);
$ret_code curl_errno($ch);
$ret_mess curl_error($ch); 
Code PHP:
$url 
est n'importe quelle URL en HTTPS du site depuis lequel ce script est appelé.

J'ai également testé en désactivant les vérifications SSL
Code PHP:
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
Ou bien en augmentant la version du handshake SSL :
Code PHP:
curl_setopt($chCURLOPT_SSLVERSIONCURL_SSLVERSION_TLSv1_2); 
Ou encore en bloquant le cipher utilisé (j'ai ouïe dire qu'il y avait un problème de support des ECDHE chez vous) :
Code PHP:
curl_setopt($chCURLOPT_SSL_CIPHER_LIST………); 

Enfin, je précise que je suis en environnement "production", et que j'ai testé avec une image "stable" dans le .ovhconfig pour que la lib OpenSSL ne soit plus la 0.9.8 mais la 1.0.1k (donc avec support de TLSv1.2)

C'est assez embêtant, ça empêche mes cron de backup de fonctionner (puisqu'il y a une URL de callback vers le cron WP)

Pourriez-vous diagnostiquer ce problème et me tenir informé d'une éventuelle correction ?
Merci d'avance.

Par ailleurs, je vous mets à dispo un p'tit script avec ce bout de code :
Code PHP:
error_reporting (E_ALL);
ini_set('display_errors''1');

// Make sure the script can handle large folders/files
ini_set('max_execution_time'600);
ini_set('memory_limit','1024M');

$url 'https://www.etduvindemoselle.fr/';

$ch curl_init();
curl_setopt($chCURLOPT_URL$url);

curl_setopt($chCURLOPT_VERBOSEtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse); //Required to make HTTPS URLs work.
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 

curl_exec($ch);
$ret_info curl_getinfo($ch);
$ret_code curl_errno($ch);
$ret_mess curl_error($ch);

print(
"STEP : ".__LINE__."\n");
curl_close($ch);

print(
"\nINFO = ");
var_export($ret_info);
print(
"\nCODE = ");
var_export($ret_code);
print(
"\nMESS = ");
var_export($ret_mess);
que vous pourrez voir depuis une console :
Code:
wget -qO- http://www.etduvindemoselle.fr/test_ovh.php