Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-23 11:08:02
original
485 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal