WSS qua Squid không giống như một lần nâng cấp WebSocket thông thường
Tách WebSocket được mã hóa bên trong CONNECT khỏi việc xử lý HTTP Upgrade dạng văn bản thuần trong proxy chuyển tiếp.
Squid có nhìn thấy yêu cầu HTTP Upgrade, hay chỉ thấy một đường hầm mang lưu lượng đã mã hóa? Điều đó quyết định liệu các kiểm soát HTTP Upgrade của nó có xử lý được sự cố hay không.
| Đường đi proxy tường minh thông thường | Những gì Squid gặp phải |
|---|---|
wss:// | Thường là CONNECT, sau đó là TLS của đích mang bắt tay WebSocket |
ws:// | Một yêu cầu HTTP Upgrade dạng văn bản thuần mà proxy có thể xử lý |
Kiểm soát nâng cấp của Squid liên quan đến các yêu cầu mà nó xử lý. Nó không tiết lộ các tiêu đề HTTP đã mã hóa bên trong một đường hầm WSS mờ đục thông thường. Việc chặn TLS hoặc xử lý proxy đặc biệt khác làm thay đổi khả năng hiển thị và có thể mang theo các yêu cầu tương thích riêng.
Với WSS, hãy tìm nơi chuỗi dừng lại: kết nối tới proxy, CONNECT được chấp nhận, TLS đã xác minh, rồi bắt tay của ứng dụng. Bị từ chối trước TLS là một lỗi khác với yêu cầu Upgrade văn bản thuần bị từ chối.
Nếu cần thay đổi chính sách nâng cấp, hãy dùng chỉ thị cho phiên bản Squid đã cài và cho phép cụ thể hành vi cần thiết. Cho phép mọi giao thức nâng cấp sẽ mở rộng chính sách ra ngoài ứng dụng cụ thể.
Một yêu cầu trang HTTPS thành công chỉ thiết lập một phần của đường đi. Lưu lượng WebSocket dài hạn vẫn có thể thất bại vì yêu cầu của ứng dụng, thời gian sống của kết nối hoặc hạn chế của trung gian, ngay cả với cùng tên máy chủ.