Доброго времени суток, уважаемые форумчане. Реализовал механизм сокетов stream_socket_server - stream_socket_client. При переходе на ssl возникли определенные проблемы. Сервер запустился нормально, привожу код: PHP: $context = stream_context_create(); stream_context_set_option($context, 'ssl', 'local_cert', $sert); stream_context_set_option($context, 'ssl', 'passphrase', ''); stream_context_set_option($context, 'ssl', 'allow_self_signed', true); stream_context_set_option($context, 'ssl', 'verify_peer', false); $socket = stream_socket_server('ssl://' . $host, $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context); Но клиент почему-то упорно отказывается подключаться к сокету, привожу код: PHP: $context = stream_context_create(); stream_context_set_option($context, 'ssl', 'local_cert', $sert); stream_context_set_option($context, 'ssl', 'passphrase', ''); stream_context_set_option($context, 'ssl', 'allow_self_signed', true); stream_context_set_option($context, 'ssl', 'verify_peer', false); $socket = stream_socket_client('ssl://' . $host, $errno, $errstr, 60, STREAM_CLIENT_CONNECT, $context); if( ! $socket) { die("Не подключено\n" . $errstr. " (" .$errno. ")\n"); } Собственно на любую попытку подключения результата -- "Не подключено", $errstr - пусто, $errno - 0. Повторюсь, по tcp все работало, проблема именно с ssl. Подскажите, пожалуйста, что я делаю не так?
В общем, ребята, если кто столкнется с такой проблемой, вот решение: PHP: $context = stream_context_create(); $context = stream_context_create( array( 'ssl' => array( 'verify_peer' => false, 'cafile' => $sert, 'peer_name' => $host, 'ciphers' => 'HIGH:!SSLv2:!SSLv3', 'disable_compression' => true, ) ) ); $socket = stream_socket_client("ssl://" . $ip . ':' . $port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context); где $sert - сертификат в формате .pem $host - хост вашего сайта (например, site.ru), $ip - ip адрес сокета, $port - порт сокета