У меня возникли проблемы с установлением SSL-соединения. отображаетсяНе удается установить локальный файл цепочки сертификатов
Этих предупреждений:
Предупреждение: stream_socket_client() [function.stream-сокет-клиент]: Не удается установить локальный файл серта цепь `D: \ путь \ cert.pem '; Убедитесь, что ваши настройки cafile/capath содержат сведения о вашем сертификате и его эмитенте в D: \ path \ testSll.php в строке 23
Предупреждение: stream_socket_client() [function.stream-socket-client]: не удалось создать SSL в D: \ path \ testSll.php в строке 23
Предупреждение: stream_socket_client() [function.stream-socket-client]: Не удалось включить криптографию в D: \ path \ testSll.php в строке 23
Предупреждение: stream_socket_client() [function.stream-сокета клиента]: не удалось подключиться к SSL: //host.tld: 700 (неизвестная ошибка) в D: \ путь \ testSll.php на линии 23
Итак, я прочитал весь вопрос о «Не удалось установить локальный файл цепочки сертификатов», но весь ответ, который я нашел, не работал для меня.
Вот код, я использую:
$host = 'host.tld';
$port = 700;
$cert = dirname(__FILE__).'\\cert.pem'; //
$passe_phrase = 'pass';
$opts = array(
'ssl'=>array(
'local_cert' => $cert,
'passphrase' => $passe_phrase,
'verify_peer' => false
)
);
$context = stream_context_create($opts);
$fp = stream_socket_client('ssl://'.$host.':'.$port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
if ($fp) {
echo "OK";
} else {
echo "ERROR: $errno - $errstr<br />\n";
}
Сертификат является хорошим. Скрипт может получить доступ к файлу cert.pem.
Я не могу найти то, что здесь отсутствует.
PHP версия: 5.2.6