4
respostas

Swoole WebSocket com SSL - new Server host ... wss://dominio?

Ao criar um novo servidor, por exemplo, tem o comando new Server(host:'0.0.0.0', port:'8080');

ao usar em produção, o host seria o IP publico do servidor? Para usar https poderia usar https://meudominio ? (corrigindo: Para usar SSL poderia usar wss://meudominio?) Pois se usar o IP, deveria instalar o SSL direto no servidor, correto?

Ao criar o lado do Client com javascript notei que se usa: new WebSocket('ws://0.0.0.0:8080/');

então como usaria https?

Uso instância EC2 na AWS e os SSLs ficam atrelados ao Load Balancer e não nas instâncias.

No caso não poderia usar o IP da instância mas sim o caminho do LoadBalancer.

Grata

4 respostas

Olá, Milene. WebSockets com TLS usam o protocolo wss://, e não https:// para realizar a conexão. :-)

Oi Vinicius,... obrigada mais uma vez.

No caso eu poderia apenas incluir o wss na frente do dominio?

new Server(host:'wss://meudominio', port:'8080'); funcionaria tendo o SSL instalado para meudominio no LoadBalancer da AWS por exemplo. ou ao invés de wss://meudominio teria que ser o ip do servidor mesmo? Se for obrigatório a ser IP do servidor, não passaria pelo LB.

Na AWS os certificados de todos meus domínios estão atrelados ao LoadBalancer. Não ficam instalados nas instancias EC2. Acessando https://meudominio funciona. não sei se funcionaria como o exemplo acima wss://meudominio.

Vi esse exemplo abaixo em https://programmerall.com/article/4986465956/ Nele o SSL fica salvo em um diretório do servidor pelo que entendi. O ruim é que teria que adicionar em todos eles e quando vencer teria que atualizar em todos.

$serv = new swoole_server('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); $serv->set(array( 'ssl_cert_file' => DIR.'/config/ssl.crt', 'ssl_key_file' => DIR.'/config/ssl.key',    'worker_num' => 2,    'task_worker_num' => 2 ));

No exemplo acima dizia sobre habilitar o openssl.

E como poderia testar para ver se o SSL está funcionando no WebSocket? Bastaria informar o wss://meudominio na barra de endereços do navegador?

Milene, pra ter um servidor websocket seguro (wss) você vai precisar do certificado configurado em todos os servidores sim, até onde eu sei. Não sei se um proxy reverso ou gerenciador de certificados nesse caso resolve. Honestamente nunca fiz esse tipo de configuração. Vale um estudo mais aprofundado...

Bastaria informar o wss://meudominio na barra de endereços do navegador?

Não. Você precisaria criar o código do cliente usando new WebSocket('wss://seudominio') e verificando essa conexão.