Intereting Posts
Получите ошибку при использовании skyscanner Api из расчета полет в php Уровни оптимизации OPKache PHP – что это такое? iconv () – как распознать оскорбительный характер? strtotime 'next month' не действует, как ожидалось (сегодня это так) Странное поведение Foreach Не удалось подключиться к Google cloud SQL. Использование PHP SDK Google Как полностью отключить кнопку «Назад» браузера при онлайн-экзамене? Каков наилучший способ реализации коррекции опечаток в поиске в php / mysql? setlocale to fr-FR в PHP и форматирование чисел Как восстановить структуру каталогов в массиве с идентификатором папки Миграция Laravel показывает пустую страницу, нет экрана отладки Получение только кусков загруженного файла в PHP? Ошибка: общие конфликты php55w с php-common на CentOS 6.5 Что такое XML, и когда я должен его использовать? Комбинированные объекты на основе выбранного элемента в другом поле со списком

чтение страницы SSL с помощью CURL (php)

Я пытаюсь загрузить содержимое защищенной (использующей https) веб-страницы, используя библиотеки php и curl.

Однако чтение не удалось, и я получаю сообщение 60: «Проблема сертификата SSL, убедитесь, что сертификат CA в порядке».

также "Подробности: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена"

Итак … красивая самообучающаяся ошибка msg.

Мой вопрос: как отправить сертификат SSL (правильный?) И получить эту страницу, чтобы проверить его и впустить?

Кроме того, вот мой массив параметров, если вам интересно:

$options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => false, // don't return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:xxx) Gecko/20041107 Firefox/xx", // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect CURLOPT_TIMEOUT => 120, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects CURLOPT_SSL_VERIFYHOST => 1, ); 

Любые предложения были бы замечательными, Андрей

Related of "чтение страницы SSL с помощью CURL (php)"

Похоже, вы ошибаетесь в неверной интерпретации ошибки. Мне кажется, что сайт, к которому вы подключаетесь, является самоподписанным или какой-то другой общей проблемой. Как и обычное предупреждение браузера, вам проще всего отключить проверки.

Вам нужно установить CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST в FALSE . Это должно отключить две основные проверки. Возможно, они оба не потребуются, но это должно по крайней мере заставить вас идти.

Чтобы быть ясным, это отключает функцию, предназначенную для защиты вас. Выполняйте это только в том случае, если вы проверили сертификат и сервер другими способами.

Дополнительная информация на сайте PHP: curl_setopt ()

Если вы хотите использовать SSL-проверку сверстников (отключение это не всегда хорошая идея), вы можете использовать следующее решение для Windows в глобальном масштабе для всех приложений:

  1. Загрузите файл с корневыми сертификатами отсюда: http://curl.haxx.se/docs/caextract.html
  2. Добавить в php.ini:

curl.cainfo=C:/path/to/cacert.pem

это все волшебство, CURL теперь может проверять сертификаты.

(как я знаю, в Linux нет такой проблемы, по крайней мере, на Ubuntu)

Даже после следующих советов по SO .. У вас могут быть проблемы с ошибкой, например:

 error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error 

проблема связана с версией SSL. Для версии 3 используйте следующую

 curl_setopt($ch, CURLOPT_SSLVERSION,3) 

Я предполагаю, что u также включил проверку равноправных узлов и узлов и указывает на фактический файл сертификата. Например.

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cacert.pem"); 

Это «проблема» с openssl и VeriSign.

У меня была аналогичная проблема, и у моего openssl отсутствовал промежуточный сертификат ssl, используемый VeriSign для подписи сертификата сервера.

https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR657

Мне пришлось импортировать эти промежуточные сертификаты с веб-сайта VeriSign или экспортировать сертификат-экспорт Firefox в мой локальный список сертификатов ca-cert, и после этого я смог использовать wget / curl для использования защищенного соединения без каких-либо ошибок.

Если это машина разработчика, вы также можете добавить этот сертификат в свою систему. Что-то вроде этого – https://www.globalsign.com/support/intermediate/intermediate_windows.php Это для WinXP, но он работает и в других версиях окон.

Вы не отправляете сертификат SSL. Похоже, что проблема связана с сертификатом SSL, поскольку он установлен на хосте, с которым вы связываетесь. Используйте опцию -k или -insecure, чтобы пройти жалобу.

Ах. См. Ответ Райана Грэма

По-видимому, это ошибка opensl. Tomcat можно настроить для работы в этом файле в /etc/tomcat7/server.xml, ограничив доступный список шифров:

 <Connector protocol="HTTP/1.1" SSLEnabled="true" ... ciphers="SSL_RSA_WITH_RC4_128_SHA"/>