[PHP] Secure WebSockets

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom aan t Goor

Tom aan t Goor

05/11/2017 10:47:36
Quote Anchor link
Hoi Allen :)

Ik ben in het bezit van een VPS met hierop Plesk. Op deze VPS draait PHP 5.3.3.
(De PHP versie is op dit moment vanwege productiedoeleinden niet te updaten)
Verder heb ik een aantal domeinnamen met een (wildcard) SSL certificaat. (*.domein.nl)

Nu wil ik voor een website (productie.domein.nl) WebSockets gaan gebruiken. Omdat dit een beveiligde website (HTTPS) is wil ik ook gebruik maken van Secure WebSockets met een geldig SSL certificaat.


Op dit moment heb ik meerdere scripts en tutorials gebruikt en gevolgd. Het opzetten van een WebSocket zelf is geen probleem, alleen het wilt maar niet lukken (om met PHP 5.3.3) een Secure WebSocket op te zetten.
Is er iemand die hier ervaring mee heeft en mij dit kan uitleggen (of een voorbeeld kan geven)?
(Mijn voorkeur heeft het op de WebSocket volledig in PHP te hebben draaien, zodat bestaande classes hergebruikt kunnen worden)

Ik hoor het graag :)
Gewijzigd op 05/11/2017 10:47:57 door Tom aan t Goor
 
PHP hulp

PHP hulp

09/01/2025 04:42:02
 
- Ariën  -
Beheerder

- Ariën -

05/11/2017 11:25:58
Quote Anchor link
Maar waarom zo een bejaarde PHP-versie?
Je mist zo wel een hoop moderne PHP-functionaliteit.
Gewijzigd op 05/11/2017 11:44:19 door - Ariën -
 
Tom aan t Goor

Tom aan t Goor

05/11/2017 11:56:06
Quote Anchor link
- Ariën - op 05/11/2017 11:25:58:
Maar waarom zo een bejaarde PHP-versie?
Je mist zo wel een hoop moderne PHP-functionaliteit.


Het draait nu op PHP 5.3.3 omdat het systeem destijds in die versie is ontwikkeld. Omdat het om een zeer grote applicatie gaat waar meerdere bedrijven mee werken is het niet zo snel gedaan om de PHP versie aan te passen.

Het updaten van de PHP versie staat wel op de planning maar kan nog een tijdje gaan duren. De WebSockets hebben een hoge prioriteit, waardoor deze (helaas) op de bejaarde PHP-versie moet draaien.

Heb je voor PHP 5.3.3 een geschikte oplossing?
 
Rob Doemaarwat

Rob Doemaarwat

05/11/2017 11:57:56
Quote Anchor link
Poe, tijdje terug dat ik me hierin verdiept heb. Maar volgens mij kwam het erop neer dat je Apache (of wat je dan ook gebruikt) het SSL werk laat doen, en het verkeer vervolgens door proxiet naar een HTTP poort (je PHP Socket Server). Vanaf de buitenkant heb je dan dus een HTTPS verbinding (tot aan Apache), en daarachter leg je gewoon een connectie via HTTP. Heb je in PHP geen gedoe met SSL.

Zoiets: https://serverfault.com/questions/486042/use-apache-as-a-https-to-http-proxy .

Toevoeging op 05/11/2017 20:49:00:

Ik heb het nog even gecheckt. Met onderstaande in de Apache vhost (kan niet in .htaccess!) werkt dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
  RewriteEngine on
  ProxyRequests Off
  ProxyPreserveHost on
  ProxyPass /wsproxy ws://localhost:4000
  ProxyPassReverse /wsproxy ws://localhost:4000

In het kort mijn setup:
- PHP socket server (op basis van React/Ratchet) luister op poort 4000 (WS/HTTP = geen SSL)
- Apache config van hierboven proxiet alle requests die beginnen met /wsproxy (zowel WSS en WS = HTTPS en HTTP) naar ws://localhost:4000 (dus HTTP = geen SSL)
- Tevens in httpd.conf:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
- Client request wordt dus iets van wss://mijn.domein.nl/wsproxy/action

Hoppa. Tijd over om eindelijk die PHP upgrade eens te doen (5.3 hè - die wordt al ruim 3 jaar niet meer bijgewerkt ...)
Gewijzigd op 05/11/2017 20:50:57 door Rob Doemaarwat
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.