Tôi có một ứng dụng WebSocket không an toàn hoạt động. Nhưng trang web của tôi sử dụng https và tôi cần kết nối WebSocket an toàn để tránh Firefox phàn nàn về việc kết nối không an toàn.Secure WebSocket (wss: //) không hoạt động trên Firefox
Tôi đang sử dụng php-websocket-server cho máy chủ WebSocket của mình với PhP 5.2.9, vì vậy khi tôi sử dụng bảo mật WebSocket tôi không thể giải mã các gói bằng hàm openssl_decrypt.
Đó là lý do tại sao tôi sử dụng stunnel để giải mã gói tin gửi đi bởi các khách hàng sử dụng WSS, để làm điều đó tôi binded WebSocket khách hàng để 12345 cổng một WebSocket máy chủ để cảng 54.321, sau đó tôi đã thêm một stunnel trong chế độ máy chủ:
[wsServer]
accept = 12345
connect = 192.168.1.227:54321
Với cấu hình này, ứng dụng của tôi hoạt động tốt trên Chrome thông qua https + wss. Nhưng trên Firefox có vấn đề trong quá trình bắt tay, có vẻ như thiếu Sec-WebSocket-Version
và Sec-WebSocket-Key
trong tiêu đề. Tôi không hiểu vì nó hoạt động trên Firefox thông qua http + ws.
Cảm ơn trước sự giúp đỡ của bạn.
Chỉnh sửa: tôi đã thêm ngoại lệ cho chứng chỉ trên cổng 12345, hiện tại việc bắt tay diễn ra tốt vì tôi nghĩ Firefox hiện có Sec-WebSocket-Key
.
Ở đây, yêu cầu tiêu đề làm việc với Firefox (lớn hơn yêu cầu Chrome):
GET/HTTP/1.1
Host: 192.168.1.227:12345
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive, Upgrade
Sec-WebSocket-Version: 13
Origin: https://192.168.1.227
Sec-WebSocket-Protocol: HyBi-00
Sec-WebSocket-Key: 65nHN33M6drIPjQHcGK8pA==
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Nếu bạn có thể hiển thị tiêu đề thực tế/bắt tay theo cả hai hướng cho trường hợp làm việc và không hoạt động, tôi có thể xác định nhanh chóng vấn đề là gì. – kanaka