Вы можете использовать http / ssl stream wrapper , чтобы позволить php прозрачно обрабатывать ssl-часть.
Давайте начнем с простого:
$c = file_get_contents('file.txt');
Оболочка не указана, поэтому file: // используется по умолчанию. file: // wrapper пытается открыть локальный файл file.txt, а file_get_contents () считывает данные из этого потока.
Следующий шаг: оболочка http
$c = file_get_contents('http://docs.php.net/fopen');
Теперь указана оболочка. http-wrapper делает запрос для h ttp: //docs.php.net/fopen и возвращает результат в виде потока, из которого file_get_contents () все свои данные.
Вы также можете использовать http s , если включена поддержка ssl (см. Также http://docs.php.net/openssl).
$c = file_get_contents('https://developer.mozilla.org/en/gecko_dom_reference');
Дополнительно: аутентификация сервера / клиента
Вы можете присоединить контекст к потоку php , позволяя вам установить параметры / параметры для соответствующих потоковых оболочек.
Например. http-обертка учитывает параметр http.user_agent при отправке http-запроса на сервер. Итак, если вы хотите, чтобы сервер «поверил», что конкретная версия Firefox делает запрос на документ, и вы можете сделать что-то вроде
$context = stream_context_create(
array(
'http'=>array('user-agent'=>'Mozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729)')
)
);
$c = file_get_contents('http://docs.php.net/fopen', 0, $context);
При отправке запроса https используются опции http и ssl
$context = stream_context_create(
array(
'http'=>array( ...http-wrapper options here ),
'ssl'=>array( ...ssl-wrapper options here )
)
);
Сервер https может потребовать от вас аутентификации перед тем, как разрешить доступ к ресурсу. Сертификат клиента должен быть отправлен вместе с запросом, и сервер решает, является ли он приемлемым или нет. Параметр context ssl.local_cert позволяет указать сертификат клиента, который используется в запросе. Файл сертификата может быть защищен паролем. В этом случае вы должны указать пароль как ssl.passphrase
$context = stream_context_create(
array(
'ssl'=>array(
'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
'passphrase'=>'my secret passphrase'
)
)
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);
С другой стороны, вы можете (также) захотеть убедиться, что сервер действительно является тем, кем он себя считает. То, как решено, является ли (серверный) сертификат приемлемым / действительным / заслуживающим доверия, немного за пределами этого поста. http://docs.php.net/book.openssl
Установите ssl.verify_peer = true и передайте информацию, где найти данные проверки, в виде ssl.cafile
$context = stream_context_create(
array(
'ssl'=>array(
'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
'passphrase'=>'my secret passphrase',
'verify_peer'=>true,
'cafile'=>'xyz/VolkerCA/VolkerCA.pem'
)
)
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);