Я пытаюсь создать сервер сокетов, используя stream_socket_server().
Обычные соединения работают нормально, но я хочу создать сервер, который шифрует соединение без сертификата. Я знаю, что это можно сделать с помощью шифрования ADH, и да, я знаю, что это теоретически менее безопасно, чем с сертификатом...
Причина, по которой я делаю этот сервер в первую очередь, заключается в том, чтобы высмеять другой сервер, к которому клиент подключается (через этот протокол, если вам интересно).
Клиент настроен на то, чтобы сначала спросить о сертификате и отступить к ADH - я протестировал его с реальной вещью, и он подключается без проблем, поэтому проблема связана с сервером сокета.
Все, что я пробовал до сих пор, привело к ошибке "сбоя рукопожатия".
Некоторые из настроек, которые я пробовал:
<?php
$server = stream_socket_server(
"tls://127.0.0.1:6667",
$errorno,
$errstr,
STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
stream_context_create(
array('ssl' => array('ciphers' => 'ADH'))
)
);
?>
<?php
$server = stream_socket_server(
"tls://127.0.0.1:6667",
$errorno,
$errstr,
STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
stream_context_create(
array('ssl' => array('ciphers' => '-COMPLEMENTOFALL ADH'))
)
);
?>
Я также попытался настроить клиента на безусловное использование ADH (как и во втором примере выше), просто для тестирования, но это тоже не удается.
Это происходит с каждой версией PHP, которую я пробовал, последней из которых является 5.5.0.
Любые идеи?