Czy można mieć WebSockets z HTTPS?
Podczas przełączania na HTTPS mój WebSocket zwraca błąd bezpieczeństwa i działa doskonale ze zwykłym HTTP.
Poniżej fragment;
socket = new WebSocket("ws://my_www:1235");
Czy można mieć WebSockets z HTTPS?
Podczas przełączania na HTTPS mój WebSocket zwraca błąd bezpieczeństwa i działa doskonale ze zwykłym HTTP.
Poniżej fragment;
socket = new WebSocket("ws://my_www:1235");
Odpowiedzi:
Połączenie WebSocket rozpoczyna swoje życie od uzgadniania HTTP lub HTTPS. Gdy dostęp do strony uzyskuje się za pośrednictwem protokołu HTTP, można użyć protokołu WS lub WSS (bezpieczny protokół WebSocket: WS przez TLS). Jednak gdy Twoja strona jest ładowana przez HTTPS, możesz używać tylko WSS - przeglądarki nie pozwalają na „obniżenie” poziomu bezpieczeństwa.
Nie możesz używać WebSockets przez HTTPS, ale możesz używać WebSockets przez TLS (HTTPS to HTTP przez TLS). Po prostu użyj „wss: //” w identyfikatorze URI.
Uważam, że najnowsza wersja Firefoksa nie pozwoli ci na używanie WebSockets innych niż TLS ze strony HTTPS, ale odwrotna sytuacja nie powinna stanowić problemu.
wss://
do ws://
. Tak więc używam wss://ws.domain.com
i apache stosuję na nim proxy i przekierowuję żądanie tam, gdzie działa serwer WS. np ws://10.12.23.45:5641/server.php
. : . i wiem, że to bardzo złe rozwiązanie - chociaż na mnie działa. Byłbym wdzięczny za pomoc, jeśli poprowadzisz mnie przez konfigurację Apache. np .: gdzie umieścić .cert
itp. dzięki!
1 dodatkowe zastrzeżenie (poza odpowiedzią kanaka / peter): jeśli używasz WSS, a certyfikat serwera nie jest akceptowany przez przeglądarkę, możesz nie otrzymać żadnego okna dialogowego renderowanego przez przeglądarkę (tak jak to się dzieje na stronach WWW). Dzieje się tak, ponieważ WebSockets jest traktowany jako tak zwany „zasób podrzędny”, a okna dialogowe akceptacji certyfikatu / wyjątku bezpieczeństwa / jakiekolwiek okna dialogowe nie są renderowane dla zasobów podrzędnych.
alert()
?