É possível ter WebSockets com HTTPS?
Ao mudar para HTTPS, meu WebSocket retorna um erro de segurança e funciona perfeitamente com HTTP normal.
Abaixo, um trecho;
socket = new WebSocket("ws://my_www:1235");
É possível ter WebSockets com HTTPS?
Ao mudar para HTTPS, meu WebSocket retorna um erro de segurança e funciona perfeitamente com HTTP normal.
Abaixo, um trecho;
socket = new WebSocket("ws://my_www:1235");
Respostas:
A conexão WebSocket começa sua vida com um handshake HTTP ou HTTPS. Quando a página é acessada através de HTTP, você pode usar WS ou WSS (WebSocket secure: WS over TLS). No entanto, quando sua página é carregada por meio de HTTPS, você só pode usar WSS - os navegadores não permitem o "downgrade" da segurança.
Você não pode usar WebSockets sobre HTTPS, mas pode usar WebSockets sobre TLS (HTTPS é HTTP sobre TLS). Basta usar "wss: //" no URI.
Acredito que a versão recente do Firefox não permitirá que você use WebSockets não-TLS de uma página HTTPS, mas o inverso não deve ser um problema.
wss://
para ws://
. Então, eu uso um wss://ws.domain.com
apache e aplico o proxy nele e redireciono a solicitação para onde o servidor WS está sendo executado. por exemplo: ws://10.12.23.45:5641/server.php
. e eu sei que é uma solução muito ruim - embora funcione para mim. Eu aprecio sua ajuda se você me guiar através da configuração do apache. por exemplo: onde colocar o .cert
etc. obrigado!
1 advertência adicional (além da resposta de kanaka / peter): se você usar WSS e o certificado do servidor não for aceitável para o navegador, você não poderá obter nenhuma caixa de diálogo renderizada do navegador (como acontece com as páginas da Web). Isso ocorre porque o WebSockets é tratado como um "sub-recurso", e o certificado aceita / exceção de segurança / quaisquer diálogos que não são renderizados para os sub-recursos.
alert()
?