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?
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.