Para permitir que seu aplicativo na Vercel acesse um servidor WebSocket sem certificado autoassinado, você precisa configurar um certificado SSL/TLS para o servidor WebSocket. Você pode usar o OpenSSL para gerar um certificado autoassinado e, em seguida, configurar o servidor WebSocket para usá-lo.
Olhe um exemplo de como gerar um certificado autoassinado usando o OpenSSL:
-
Certifique-se de ter o OpenSSL instalado no seu computador.
-
Abra um terminal ou prompt de comando e navegue até o diretório onde deseja armazenar o certificado.
-
Execute o seguinte comando para gerar a chave privada:
openssl genrsa -out key.pem 2048
Este comando gera uma chave privada com um comprimento de 2048 bits e a salva em um arquivo chamado key.pem.
Execute o seguinte comando para gerar o certificado autoassinado:
openssl req -new -x509 -key key.pem -out cert.pem -days 3650
Este comando gera um certificado autoassinado válido por 10 anos e o salva em um arquivo chamado cert.pem. Ele também solicita informações sobre o certificado, como nome, organização, etc. Você pode simplesmente pressionar Enter em todas as perguntas para usar as configurações padrão.
- Copie os arquivos key.pem e cert.pem para o servidor WebSocket.
Agora, você precisará configurar o servidor WebSocket para usar o certificado. Isso pode variar dependendo do servidor WebSocket que você está usando, mas geralmente envolve fornecer o caminho para o arquivo key.pem e cert.pem no arquivo de configuração do servidor. Você precisará ler a documentação do seu servidor websockify para obter instruções detalhadas sobre como fazer isso. (sinceramente nunca mexi com esse)
Com o certificado configurado no servidor WebSocket, você deve ser capaz de acessá-lo de forma segura usando o protocolo wss:// em vez de ws://. Você pode atualizar o código do seu aplicativo para usar o novo URL seguro e deve ser capaz de se conectar ao servidor WebSocket sem problemas.😃
Sou bem newbie, mas quero ajudar. Isso que eu ia dizer. Se você vai colocar pra rodar em ambiente de produção, o correto é usar um certificado real, imagino, emitido por uma entidade certificadora. Voce tem acesso à algum tipo de S.O.? Isso roda em qual server? Ou é tipo PaaS e você não tem acesso direto ?
Não sei se tem muito a ver, mas sei que dá pra gerar um certificado válido real de forma bem tranquila com um botzinho, ele mas é pré req que você tenha posse de um domínio. Dá uma olhada, talvez possa ser útil:
Para efetuar a instalação do Certbot, é preciso que nosso servidor Web já esteja configurado com nosso domínio e esteja rodando com HTTP. O Certbot se encarregará de configurar um desafio com HTTP para validar que você é responsável por aquele domínio. Caso isso não seja possível, existe a opção de efetuar um desafio incluindo um registro TXT no seu domínio, porém esse processo leva mais tempo. https://dkrn4sk0rn31v.cloudfront.net/2019/12/04001729/site_http.png
Ao selecionar sua distribuição e servidor web, você pode consultar as instruções para instalação. No Ubuntu, vamos adicionar o repositório do apt-get do Cerbot e iniciar sua instalação:
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update
No último comando, temos a variação de um script python com a variação de web server utilizado. Por exemplo, caso esteja utilizando o Apache, você instalaria python-certbot-apache
sudo certbot --nginx
Será feita algumas perguntas, como qual o domínio a ser configurado, se você deseja redirecionar todo o tráfego para HTTPS automaticamente, entre outros. Será gerado então sua chave privada para esse certificado e o Nginx será configurado de acordo:
https://dkrn4sk0rn31v.cloudfront.net/2019/12/04001728/certbot_config.png
Com isso temos nosso servidor configurado e respondendo em HTTPS!
https://dkrn4sk0rn31v.cloudfront.net/2019/12/04001729/site_https.png
O Certbot irá gerar um certificado com validade de apenas três meses, ao contrário dos certificados de um ou três anos geralmente emitidos por outras Autoridades Certificadoras. Entretanto, o certificado do Certbot é gratuito e se renova automaticamente. É possível testar o processo de renovação automática com o comando:
sudo certbot renew --dry-run
Caso você esteja utilizando outra distribuição Linux, na página inicial do Certbot você pode consultar instruções detalhadas de como instalar em diferentes distribuições e servidores web:
https://dkrn4sk0rn31v.cloudfront.net/2019/12/04001728/op%C3%A7%C3%B5es_certbot.png
O próximo passo é executar o certbot com o argumento do servidor web que você irá configurar:
sudo apt install certbot python-certbot-ngin
x
fonte: https://www.treinaweb.com.br/blog/gerando-certificados-ssl-gratuitos-com-certbot#:~:text=Para%20gerar%20um%20certificado%20SSL%20válido%20é%20preciso%20vários%20passos,pelo%20domínio%20que%20deseja%20utilizar (copiei o conteúdo só pra evitar que o link -com a informação-) se perca.
Então, eu tinha batido nessa questão (até na dock do websockify eles comentam, mas não funcionava por nada). Tentei aqui novamente com a sua abordagem, porém ainda com problemas no acesso lá na Vercel.
Eu uso esse websockify para acessar um servidor vnc na mesma máquina, pelo browser. Aí a Vercel chega a bater no servidor websocket, porém disconecta na hora.
Outra coisa, no servidor ele me dá este erro aqui:
handler exception: [Errno 13] Permission denied
O qual eu tentei mudar o chmod e tbm criar as chaves com sudo su, porém sem resultados