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:

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

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-nginx

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.

Opa, muito obrigado pelos links! Por enquanto, como é protótipo, é apenas para o pessoal ver como ficaria no projeto final e tudo, então ainda não é ambiente de produção mesmo

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