Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « Avertissement : échec de l'activation du chiffrement » lors de l'accès aux URL HTTPS avec OpenSSL ?

Comment résoudre l'erreur « Avertissement : échec de l'activation du chiffrement » lors de l'accès aux URL HTTPS avec OpenSSL ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-23 11:08:02379parcourir

How to Resolve

Avertissement OPENSSL : « Échec de l'activation du chiffrement » pour une URL HTTPS spécifique

Ce problème survient lors de la tentative d'accès à des URL HTTPS spécifiques à l'aide de file_get_contents (), malgré l'activation de l'extension openssl. La fonction renvoie le message d'erreur : "Avertissement : échec de l'activation du chiffrement", indiquant que les opérations cryptographiques nécessaires ne peuvent pas être effectuées.

La cause première de ce problème réside dans le protocole de sécurité utilisé par le site Web problématique. Dans ce cas, le site Web utilise SSLv3, qui est un protocole obsolète et vulnérable. La configuration par défaut d'openssl ne prend pas en charge SSLv3 par défaut pour des raisons de sécurité.

Pour résoudre ce problème et récupérer avec succès le contenu du site Web, une solution de contournement est nécessaire. Une option consiste à utiliser la fonction curl_setopt() pour spécifier manuellement la version SSL à utiliser. Ceci peut être réalisé en définissant l'option CURLOPT_SSLVERSION sur 3, ce qui correspond à SSLv3.

<code class="php">function getSSLPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSLVERSION,3); 
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>

Un autre problème potentiel pouvant survenir sous Windows est le manque d'accès aux certificats racine. Pour résoudre ce problème, il est recommandé de télécharger les certificats racine et de spécifier manuellement leur emplacement à l'aide des options CURLOPT_CAINFO et CURLOPT_SSL_VERIFYPEER.

<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

En implémentant ces solutions de contournement, il devient possible d'accéder et de récupérer avec succès le contenu du problème. site Web utilisant openssl.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn