web-dev-qa-db-fra.com

Erreur Curl OpenSl 141A318A TLS_PROCESS_SKE_DHE: DH Clé trop petite

J'ai une application WebApplication qui fait un appel de boucle sur un site différent pour obtenir des données. Étant donné que mon fournisseur WebSPACE (IONOS) a apporté des modifications apportées au serveur, l'appel de CURL ne fonctionne plus.

mon appel en boucle ressemblait à ceci:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$sResult = curl_exec($ch);
curl_close($ch);

Il n'a pas fonctionné. $ Sresult était vide. J'ai changé mon code et j'ai essayé

$test = file_get_contents($link);

cela me donne l'erreur:

PHP Warning:  file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

y a-t-il quelque chose qui manque dans mon appel de boucle ou fichier_get_contents?

5
hatemjapo

La recommandation habituelle pour cette erreur est de définir CipherString paramètre dans /etc/ssl/openssl.cnf Sur DEFAULT:@SECLEVEL=1.

En PHP, vous pouvez obtenir la même chose avec curl_setopt() :

curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');

C'est une meilleure solution que l'édition openssl.cnf Puisqu'il vous permet de détendre la sécurité pour un seul appel spécifique, plutôt que sur le système.

5
Indrek