Executando verificação de segurança...
2

[AJUDA] ⚠️ Gerando certificados auto assinados com openssl (SSL/TLS) 🎓

Não consigo fazer um app na Vercel (https), acessar um proxy do websockify

Bom, basicamente é este o meu problema: A conexão https da Vercel não deixa eu acessar um link de websocket do websockify em outro servidor encriptografado sem certificado, no caso o link é ws://0.0.0.0/websockify (substitui o ip real do servidor por 0.0.0.0).

Localmente ele funciona, pois no localhost é http, então aceita tudo. Mas eu preciso fazer deploy desta aplicação (Um protótipo em React)! Alguém consegue me ajudar? Na documentação do websockify ele explica como gerar uma conexão wss (secure), mas eu não entendi muito bem, pois nunca mexi com certificado, domínio, etc. Estou bem perdido 🤯. Alguém com experiência para me ajudar nessa?

Eu procurei já por dois dias seguidos de trabalho, mas tive exatamente 0 progresso nisso. Aprendi muita coisa, de fato, mas sem êxito no objetivo.

Se tiverem alguma dúvida sobre meu problema, só perguntar aqui. Mas basicamente eu preciso do websockify (ou o noVNC) para iniciar um proxy pro vncserver, do tigervnc. Mas eu preciso mesmo de ajuda com esses certificados.

Carregando publicação patrocinada...
3

Uma das soluções que me indicaram pra resolver esse problema com servidor websocket sem certificado foi usar o cloudflare, você usa ele a proxiar o seu servidor websocket, o próprio cloudflare garante o SSL.

1

Cara, pior que eu consegui acesso ao cloudflare e vi que eles até tem um tutorial pra configurar VNC, o que não entendi muito bem. Você conseguiria me enviar alguma doc com um passo a passo por lá ou me instruir pra isto? Mas vlww pela respostaa

2

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.😃

2

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.

1

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

1

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