SSL WebSocket

97 views
Skip to first unread message

ka...@menocom.ru

unread,
Sep 14, 2017, 5:24:26 PM9/14/17
to phpd...@googlegroups.com
Здравствуйте!

Использую phpdaemon для своего проекта и совсем уже запуталась
 
Для некоторого сайта был создан вебсокет сервер, который умел принимать некоторые команды и отвечать на них и все работало. Далее появилась необходимость подключения ssl на сайт и браузеры стали блокировать обращения к вебсокет серверу - решили перейти на wss.
Итак, помучавшись смогла сгенерировать ключ и сертификат и настроить конфиг. Но теперь при запуске демона вижу такую ошибку:
Fatal error: Undefined class constant 'SSLv3_SERVER_METHOD' in /opt/phpdaemon/PHPDaemon/BoundSocket/Generic.php on line 292

 

Vasily Zorin

unread,
Sep 14, 2017, 5:27:08 PM9/14/17
to phpd...@googlegroups.com
Здравствуйте.
Скажите, а pecl-event собран с поддержкой ssl?
Для наилучшей совместимости советую использовать прослойку SockJS.


 

--

---
Вы получили это сообщение, поскольку подписаны на группу "phpdaemon".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес phpdaemon+unsubscribe@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

katyach...@gmail.com

unread,
Sep 15, 2017, 4:16:10 AM9/15/17
to phpdaemon
Да, поддержка ssl имеется

Может ли проблема возникать из-за неправильно сгенерированных ключей?

Запись из конфига:

TransportContext:myContext {
ssl;
certFile "/etc/apache2/ssl/wssc.pem";
pkFile "/etc/apache2/ssl/wssk.pem";
passphrase "";
verifyPeer true;
allowSelfSigned true;
}
Pool:Servers\WebSocket {
enable 1;
listen "tcp://0.0.0.0:8047", "tcp://0.0.0.0:8049##myContext";
privileged;
#maxconcurrency 1;
}


пятница, 15 сентября 2017 г., 2:27:08 UTC+5 пользователь Vasily Zorin написал:

Vasily Zorin

unread,
Sep 15, 2017, 6:51:34 AM9/15/17
to phpd...@googlegroups.com
Проблема ни коим образом не связана с ключами. Ошибка возникает по причине того что в этом классе (https://secure.php.net/EventSslContext) почему-то отсутствует константа SSLv3_SERVER_METHOD.

Попробуйте в конфиге:   tls;
вместо  ssl;

--

---
Вы получили это сообщение, поскольку подписаны на группу phpdaemon.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес phpdaemon+unsubscribe@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Vasily Zorin

unread,
Sep 15, 2017, 6:55:01 AM9/15/17
to phpd...@googlegroups.com
Выполните, пожалуйста,  данную команду:

php -r 'print_r((new ReflectionClass("EventSslContext"))->getConstants());'

И пришлите результат. Это внесёт некоторую ясность.

katyach...@gmail.com

unread,
Sep 15, 2017, 11:17:52 AM9/15/17
to phpdaemon
tls заменила, но не помогло

Результат команды:

Array ( [TLS_CLIENT_METHOD] => 4
[TLS_SERVER_METHOD] => 8
[TLSv11_CLIENT_METHOD] => 9
[TLSv11_SERVER_METHOD] => 10
[TLSv12_CLIENT_METHOD] => 11
[TLSv12_SERVER_METHOD] => 12
[OPT_LOCAL_CERT] => 1
[OPT_LOCAL_PK] => 2
[OPT_PASSPHRASE] => 3
[OPT_CA_FILE] => 4
[OPT_CA_PATH] => 5
[OPT_ALLOW_SELF_SIGNED] => 6
[OPT_VERIFY_PEER] => 7
[OPT_VERIFY_DEPTH] => 8
[OPT_CIPHERS] => 9
[OPT_NO_SSLv2] => 10
[OPT_NO_SSLv3] => 11
[OPT_NO_TLSv1] => 12
[OPT_NO_TLSv1_1] => 13
[OPT_NO_TLSv1_2] => 14
[OPT_CIPHER_SERVER_PREFERENCE] => 15
[OPT_REQUIRE_CLIENT_CERT] => 16
[OPT_VERIFY_CLIENT_ONCE] => 17
[OPENSSL_VERSION_TEXT] => OpenSSL 1.0.2h 3 May 2016
[OPENSSL_VERSION_NUMBER] => 268443791 )

пятница, 15 сентября 2017 г., 15:55:01 UTC+5 пользователь Vasily Zorin написал:
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес phpdaemon+...@googlegroups.com.

Vasily Zorin

unread,
Sep 15, 2017, 6:20:41 PM9/15/17
to phpd...@googlegroups.com
А что стало выдавать когда tls прописали? Должно работать, TLS_SERVER_METHOD есть ведь.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес phpdaemon+unsubscribe@googlegroups.com.

katyach...@gmail.com

unread,
Sep 16, 2017, 5:31:59 PM9/16/17
to phpdaemon
Сейчас, как я понимаю, сам сервер заработал, в консоли последние строки:

[PHPD] W#9053 \PHPDaemon\Core\TransportContext:myContext up.
[PHPD] W#9053 \PHPDaemon\Applications\MyWebSocket up.

Но подключение к нему из браузера не происходит... Хотя порт я поменяла на 8049 и подключение на "wss"

Vasily Zorin

unread,
Sep 18, 2017, 6:44:57 AM9/18/17
to phpd...@googlegroups.com
А что пишет браузер? Если хотите, может использовать nginx в качестве proxy, возможно там более прозрачная настройка SSL/TLS.

katyach...@gmail.com

unread,
Sep 18, 2017, 4:07:43 PM9/18/17
to phpdaemon
Браузер пишет:

WebSocket connection to 'wss://185.41.160.172:8049/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

А если поменять порт на 443:

WebSocket connection to 'wss://185.41.160.172:443/' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

С проксированием другие нюансы, да и хотелось бы все-таки разобраться :(

понедельник, 18 сентября 2017 г., 15:44:57 UTC+5 пользователь Vasily Zorin написал:


> А что пишет браузер? Если хотите, может использовать nginx в качестве proxy, возможно там более прозрачная настройка SSL/TLS.
>
>
> 2017-09-17 0:31 GMT+03:00 <katyach...@gmail.com>:
> Сейчас, как я понимаю, сам сервер заработал, в консоли последние строки:
>
>
>
> [PHPD] W#9053 \PHPDaemon\Core\TransportContext:myContext up.
>
> [PHPD] W#9053 \PHPDaemon\Applications\MyWebSocket up.
>
>
>
> Но подключение к нему из браузера не происходит... Хотя порт я поменяла на 8049 и подключение на "wss"
>
>
>
>
>
> --
>
>
>
> ---
>
> Вы получили это сообщение, поскольку подписаны на группу phpdaemon.
>
>
>

> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес phpdaemon+...@googlegroups.com.

Reply all
Reply to author
Forward
0 new messages