Предупреждение OPENSSL: «Не удалось включить шифрование» для определенного URL-адреса HTTPS
Эта проблема возникает при попытке доступа к определенным URL-адресам HTTPS с помощью file_get_contents (), несмотря на то, что расширение openssl включено. Функция возвращает сообщение об ошибке: «Предупреждение: не удалось включить шифрование», указывающее на то, что необходимые криптографические операции не могут быть выполнены.
Основная причина этой проблемы заключается в протоколе безопасности, используемом проблемным веб-сайтом. В этом случае сайт использует SSLv3 — устаревший и уязвимый протокол. Конфигурация openssl по умолчанию не поддерживает SSLv3 по соображениям безопасности.
Чтобы решить эту проблему и успешно получить контент с веб-сайта, необходимо обходное решение. Один из вариантов — использовать функцию Curl_setopt(), чтобы вручную указать версию SSL, которая будет использоваться. Этого можно добиться, установив для параметра CURLOPT_SSLVERSION значение 3, что соответствует SSLv3.
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"));
Другая потенциальная проблема, которая может возникнуть в Windows, — отсутствие доступа к корневые сертификаты. Чтобы решить эту проблему, рекомендуется загрузить корневые сертификаты и вручную указать их местоположение с помощью параметров CURLOPT_CAINFO и CURLOPT_SSL_VERIFYPEER.
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
Реализуя эти обходные пути, становится возможным успешно получать доступ и получать контент с проблемного веб-сайта с помощью openssl.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3