«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибку «Внимание: не удалось включить шифрование» при доступе к URL-адресам HTTPS с помощью OpenSSL?

Как устранить ошибку «Внимание: не удалось включить шифрование» при доступе к URL-адресам HTTPS с помощью OpenSSL?

Опубликовано 2 ноября 2024 г.
Просматривать:889

How to Resolve \

Предупреждение 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.

Заявление о выпуске Эта статья перепечатана по адресу: 1729647257. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3