เป็นไปได้ไหมที่จะมี WebSockets พร้อม HTTPS
เมื่อเปลี่ยนเป็น HTTPS WebSocket ของฉันจะส่งคืนข้อผิดพลาดด้านความปลอดภัยและทำงานได้อย่างสมบูรณ์กับ HTTP ปกติ
ด้านล่างนี้เป็นตัวอย่างข้อมูล
socket = new WebSocket("ws://my_www:1235");
เป็นไปได้ไหมที่จะมี WebSockets พร้อม HTTPS
เมื่อเปลี่ยนเป็น HTTPS WebSocket ของฉันจะส่งคืนข้อผิดพลาดด้านความปลอดภัยและทำงานได้อย่างสมบูรณ์กับ HTTP ปกติ
ด้านล่างนี้เป็นตัวอย่างข้อมูล
socket = new WebSocket("ws://my_www:1235");
คำตอบ:
การเชื่อมต่อ WebSocket เริ่มต้นชีวิตด้วยการจับมือ HTTP หรือ HTTPS เมื่อเข้าถึงเพจผ่าน HTTP คุณสามารถใช้ WS หรือ WSS (WebSocket secure: WS over TLS) อย่างไรก็ตามเมื่อเพจของคุณโหลดผ่าน HTTPS คุณสามารถใช้ได้เฉพาะ WSS เท่านั้น - เบราว์เซอร์ไม่อนุญาตให้ "ดาวน์เกรด" ความปลอดภัย
คุณไม่สามารถใช้ WebSockets ผ่าน HTTPS แต่คุณสามารถใช้ WebSockets ผ่าน TLS ได้ (HTTPS คือ HTTP ผ่าน TLS) เพียงใช้ "wss: //" ใน URI
ฉันเชื่อว่า Firefox เวอร์ชันล่าสุดจะไม่อนุญาตให้คุณใช้ WebSockets ที่ไม่ใช่ TLS จากหน้า HTTPS แต่การย้อนกลับไม่น่าจะเป็นปัญหา
wss://
ws://
ดังนั้นฉันจึงใช้wss://ws.domain.com
และ apache ใช้พร็อกซีกับมันและขอเปลี่ยนเส้นทางที่เซิร์ฟเวอร์ WS กำลังทำงานอยู่ เช่น: ws://10.12.23.45:5641/server.php
. และฉันรู้ว่ามันเป็นวิธีแก้ปัญหาที่แย่มาก - แม้ว่ามันจะได้ผลสำหรับฉัน ขอขอบคุณสำหรับความช่วยเหลือหากคุณแนะนำฉันเกี่ยวกับการกำหนดค่า apache เช่นจะใส่ที่ไหน.cert
เป็นต้นขอบคุณ!
ข้อแม้เพิ่มเติม 1 ข้อ (นอกเหนือจากคำตอบโดย kanaka / peter): หากคุณใช้ WSS และเบราว์เซอร์ไม่ยอมรับใบรับรองเซิร์ฟเวอร์คุณอาจไม่ได้รับกล่องโต้ตอบการแสดงผลของเบราว์เซอร์ใด ๆ (เช่นเดียวกับที่เกิดขึ้นกับหน้าเว็บ) เนื่องจาก WebSockets ถือว่าเป็นสิ่งที่เรียกว่า "แหล่งข้อมูลย่อย" และการยอมรับใบรับรอง / ข้อยกเว้นด้านความปลอดภัย / กล่องโต้ตอบใด ๆ ที่ไม่แสดงผลสำหรับแหล่งข้อมูลย่อย
alert()
?