Вы можете использовать http/ssl stream wrapper, чтобы позволить PHP прозрачно обрабатывать часть ssl.
Давайте начнем с простого:
$c = file_get_contents('file.txt');
Нет обертка не задан, поэтому файл: // используется по умолчанию. 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');
Дополнительно: клиент/сервер аутентификации
Вы можете прикрепить context to a php stream позволяет установить параметры/параметр для вовлеченных потока оберток.
E.g. http-wrapper принимает параметр 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 требует аутентификации, прежде чем разрешить доступ к ресурсу. Сертификат клиента должен быть отправлен с запросом, и сервер решает, приемлемо это или нет. Параметр контекста 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);
Если ответ SSO на SSL/HTTPS, не требуется расшифровать ответ. Можете ли вы дать какой-то код и указать, что вы ожидаете, и что он не делает. – Gordon
Также вы можете указать название продукта сервера SSO или любую дополнительную информацию об этом. – Gordon