saya buruk, saya menyadari bahwa server soket AIR yang saya gunakan tidak aman, saya harus menulis ulang untuk menggunakan flash.net.SecureSocket ...
Eric
Jawaban:
170
Koneksi WebSocket memulai hidupnya dengan jabat tangan HTTP atau HTTPS. Ketika halaman diakses melalui HTTP, Anda dapat menggunakan WS atau WSS (WebSocket secure: WS over TLS). Namun, saat halaman Anda dimuat melalui HTTPS, Anda hanya dapat menggunakan WSS - browser tidak mengizinkan untuk "menurunkan" keamanan.
itulah yang saya miliki tetapi saya menyadari bahwa server soket AIR yang saya gunakan tidak aman, saya harus menulis ulang untuk menggunakan flash.net.SecureSocket ...
Eric
Flash memiliki masalah yang serius juga ... Apakah Anda membangun server WebSocket (jika demikian, mengapa), atau apakah Anda membuat aplikasi?
Peter Moskovits
1
Saya memiliki server soket AIR yang menjalankan ya.
Eric
Jadi bagaimana memilih WSS jika halaman tidak dimuat dengan HTTP?
anatoly techtonik
29
Anda tidak dapat menggunakan WebSockets melalui HTTPS, tetapi Anda dapat menggunakan WebSockets melalui TLS (HTTPS adalah HTTP melalui TLS). Cukup gunakan "wss: //" di URI.
Saya yakin versi Firefox terbaru tidak akan membiarkan Anda menggunakan non-TLS WebSockets dari halaman HTTPS, tetapi sebaliknya seharusnya tidak menjadi masalah.
Jadi apa solusinya? Saya memiliki server WS yang menjalankan http sekarang saya membeli SSL dan browser tidak lagi mengizinkan saya untuk terhubung dengan WS. Saya mengubah WS ke WSS: // dan sekarang tidak terhubung dengan WebSocket
muaaz
@muaaz server WebSocket Anda harus berjalan dalam mode WSS dan sebaiknya dimuat dengan sertifikat / kunci SSL yang sama dengan server web Anda yang melayani halaman web asal Anda yang mencoba menyambung ke server websocket.
kanaka
4
Terima kasih. btw, saya baru saja menyelesaikannya dengan Proxying (menggunakan apache) permintaan dari wss://ke ws://. Jadi, saya menggunakan wss://ws.domain.comdan apache menerapkan proxy di atasnya dan mengarahkan permintaan di mana server WS berjalan. mis ws://10.12.23.45:5641/server.php. : . dan saya tahu ini solusi yang sangat buruk - meskipun, ini berhasil untuk saya. Saya akan menghargai bantuan Anda jika Anda memandu saya melalui konfigurasi apache. misalnya: di mana harus meletakkan .certdll terima kasih!
muaaz
@muaaz maaf, saya tidak tahu konfigurasi apache selain googling sendiri.
kanaka
21
1 peringatan tambahan (selain jawaban oleh kanaka / peter): jika Anda menggunakan WSS, dan sertifikat server tidak dapat diterima oleh browser, Anda mungkin tidak mendapatkan dialog yang diberikan browser (seperti yang terjadi pada halaman Web). Ini karena WebSockets diperlakukan sebagai apa yang disebut "sub-sumber", dan sertifikat menerima / pengecualian keamanan / dialog apa pun tidak diberikan untuk sub-sumber.
Jawaban:
Koneksi WebSocket memulai hidupnya dengan jabat tangan HTTP atau HTTPS. Ketika halaman diakses melalui HTTP, Anda dapat menggunakan WS atau WSS (WebSocket secure: WS over TLS). Namun, saat halaman Anda dimuat melalui HTTPS, Anda hanya dapat menggunakan WSS - browser tidak mengizinkan untuk "menurunkan" keamanan.
sumber
Anda tidak dapat menggunakan WebSockets melalui HTTPS, tetapi Anda dapat menggunakan WebSockets melalui TLS (HTTPS adalah HTTP melalui TLS). Cukup gunakan "wss: //" di URI.
Saya yakin versi Firefox terbaru tidak akan membiarkan Anda menggunakan non-TLS WebSockets dari halaman HTTPS, tetapi sebaliknya seharusnya tidak menjadi masalah.
sumber
wss://
kews://
. Jadi, saya menggunakanwss://ws.domain.com
dan apache menerapkan proxy di atasnya dan mengarahkan permintaan di mana server WS berjalan. misws://10.12.23.45:5641/server.php
. : . dan saya tahu ini solusi yang sangat buruk - meskipun, ini berhasil untuk saya. Saya akan menghargai bantuan Anda jika Anda memandu saya melalui konfigurasi apache. misalnya: di mana harus meletakkan.cert
dll terima kasih!1 peringatan tambahan (selain jawaban oleh kanaka / peter): jika Anda menggunakan WSS, dan sertifikat server tidak dapat diterima oleh browser, Anda mungkin tidak mendapatkan dialog yang diberikan browser (seperti yang terjadi pada halaman Web). Ini karena WebSockets diperlakukan sebagai apa yang disebut "sub-sumber", dan sertifikat menerima / pengecualian keamanan / dialog apa pun tidak diberikan untuk sub-sumber.
sumber
alert()
?