Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 26.06.2014
Сообщений: 27

Расшифровка ssl и stream socket client

04.06.2022, 02:48. Показов 813. Ответов 0

Студворк — интернет-сервис помощи студентам
Создаю собственную систему все по классики бэкенд на php (8ка, ооп, строгая типизация) и фронтенд js+html+css, причем один и почти с нуля.

Остался только socket сервер для определения пользователей онлайн и встроенного мессенджера, и в этом месте возникла проблема если использовать http и соответственно ws на клиенте (как на локальной машине) все работает как надо, если же использовать https и wss то на сервер приходят нечитаемые иероглифы причем еще и от сервера к серверу разные имеется возможность проверить на двух, да и у себя дописав s при этом нужна поддержка обоих соединений.

Встал вопрос как дешифровать уже на сервере, почитал пути решения и они оба мне не понравились, нужно или дописать в апач прокси VirtualHost с номером порта поскольку в htaccess это не получается сделать или использовать функции php, для которых нужен ключ *pem с обновляя его каждые 3 месяца, хотя это можно автоматизировать.

Оба варианта плохи тем что ставят в зависимость от настроек сервера, и требует широких прав доступа например к тем же ключам, а система хоть и пишется на основной работе под конкретные задачи, но в дальнейшем я планирую ее использование и в своих проектах, на самых разных серверах хотя бэкенд я вероятно перепишу на другой язык.

И так вопрос?
Есть ли еще какие способы дешифровки данных или это все что можно сделать??
И второе в php еще имеется stream_socket_client мне удалось соединится с сервером используя обычный ajax, но вот что делать дальше не понятно он даже не закрывает соединения с помощью stream_socket_shutdown и fclose

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public function Connect():void
{
        $Connect = @stream_socket_client('tcp://' . $_SERVER['SERVER_ADDR'].':'.Core::$OPTIONS->PORT, $ErrNum, $Error);
        if(!$Connect) 
        {
            //echo $Error.' ('.$ErrNum.')<br />';
            if(!file_exists(self::$Log) || filesize(self::$Log) === 0) file_put_contents(self::$Log, 'Error: '.$Error.' ('.$ErrNum.') at: '.Core::GetDateTime());
            else file_put_contents(self::$Log, PHP_EOL.'Error: '.$Error.' ('.$ErrNum.') at: '.Core::GetDateTime(), FILE_APPEND);
        }
        else 
        {
            if(!file_exists(self::$Log) || filesize(self::$Log) === 0) file_put_contents(self::$Log, 'Open at: '.Core::GetDateTime());
            else file_put_contents(self::$Log, PHP_EOL.'Open at: '.Core::GetDateTime(), FILE_APPEND);
            
            (string)$Host = $_SERVER['HTTP_HOST'].':'.Core::$OPTIONS->PORT;
            (string)$Uri = '/?uid='.Core::$User->ID;
            (string)$Header = "GET ".$Uri." HTTP/1.1\r\n" .
                "Host: ".$Host."\r\n" .
                "Upgrade: websocket\r\n" .
                "Connection: Upgrade\r\n" .
                "Sec-WebSocket-Key: tQXaRIOk4sOhqwe7SBs43g==\r\n" .
                "Sec-WebSocket-Version: 13\r\n\r\n";
            //stream_set_blocking($Connect, false);
            if(fwrite($Connect, $Header)) file_put_contents(self::$Log, PHP_EOL.'Connect at: '.Core::GetDateTime(), FILE_APPEND);
            else file_put_contents(self::$Log, PHP_EOL.'Error connect at: '.Core::GetDateTime(), FILE_APPEND);
            
            //while(!feof($Connect)) {}
            
            if(!stream_socket_shutdown($Connect, STREAM_SHUT_RDWR)) file_put_contents(self::$Log, PHP_EOL.'Error shut down at: '.Core::GetDateTime(), FILE_APPEND);
            else 
            {
                file_put_contents(self::$Log, PHP_EOL.'Shut down at: '.Core::GetDateTime(), FILE_APPEND);
                if (!fclose($Connect)) file_put_contents(self::$Log, PHP_EOL.'Error close at: '.Core::GetDateTime(), FILE_APPEND);
                else file_put_contents(self::$Log, PHP_EOL.'Close at: '.Core::GetDateTime(), FILE_APPEND);
            }
       }
    
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2022, 02:48
Ответы с готовыми решениями:

Nodejs net socket server and android socket client
Добрый день Форумчане нужно помощь гуру! Решил с другом написать сервер на ноде с использование сокетов и андроид клиент отправки сокет. Но...

Socket Android Client and Java Socket Server
Доброго времени суток.Пытаюсь сделать простое клиент-серверное приложение. Клиент - приложение на Android устройстве. Сервер - Приложение...

Windows socket server python + socket client js
Здравствуйте пытаюсь решить такую задачу, на веб странице реализовал soket клиент на js, и socket server, сокет сервер получает данные от...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2022, 02:48
Помогаю со студенческими работами здесь

Socket Server и Socket Client
Здравствуйтe, мeня заинтeрeсовал вопрос, как можно сдeлать так, чтобы в одной программe сразу запускался и сeрвeр и клиeнт, смотрeл много...

Socket client
Всем доброго дня! Подскажите как ?. Есть АТС (на Asterisk), я умею с ней обращаться из клиентского windows приложения. Т.е. могу...

Socket Client
Столкнулся с такой проблемой - не знаю как реализовать клиент на сокете. В общем мне нужна такая система. 1 клиент отправляет данные на...

Передача текста через Socket Stream
Здравствуйте, друзья. Передаю данные с клиента на сервер. Прошу вас написать пример отправки строки(255 символов) через SendStream или...

Socket, Client - Server
Создаю Клиент Серверное приложения, столкнулся с проблемой, если открыть клиент и сервер на одном компютере, то все работает, я указал в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru