С PHP и curl мне нужно подключиться через прокси-сервер к защищенному SSL-сайтом и игнорировать предупреждения сертификатов. Моя командная строка curl выглядит так:
curl -k -u username:password -X GET https://someURL
Просматривая curl.php, я вижу, что я считаю правильным выбором. С ними я получаю что-то вроде этого:
$ch = curl_init("https://someURL"); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors? curl_setopt($ch, CURLOPT_PROXY, true); // Proxy true? curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "username:password"); $result = curl_exec($ch);
Но, $ result всегда возвращает false. В моем пароле есть специальный символ «!». Возможно, мне нужно избежать этого? Кроме этого, любые другие идеи?
Спасибо, Скотт
Чтобы полностью отключить проверку ssl-сертификата, CURLOPT_SSL_VERIFYPEER
опция CURLOPT_SSL_VERIFYPEER
. Если он установлен в false
проверка сертификата будет вообще отключена. Поскольку значение по умолчанию равно true
, вам нужно добавить:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Из документации PHP :
CURLOPT_SSL_VERIFYPEER FALSE, чтобы остановить cURL от проверки сертификата партнера. Альтернативные сертификаты для проверки могут быть указаны с помощью опции CURLOPT_CAINFO, или каталог сертификата может быть указан с помощью опции CURLOPT_CAPATH. TRUE по умолчанию, начиная с cURL 7.10. Комплект по умолчанию, установленный cURL 7.10.
Обратите внимание: если проверка сертификата отключена, вы можете опустить параметр CURLOPT_SSL_VERIFYHOST
. Таким образом, можно удалить следующую строку:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
Вы также спросили, подходит ли следующая настройка:
curl_setopt($ch, CURLOPT_PROXY, true);
Из документации PHP :
Прокси HTTP для туннелирования запросов.
Означает, что он принимает прокси-адрес типа 192.168.0.1:3128, если вы используете прокси-сервер. true
в этом случае не имеет смысла