Abra a porta 443 para um aplicativo da web de nó

1

Eu tenho tentado executar um aplicativo da Web de nó na porta 443, mas estou recebendo esta saída. Erro: ouça EACCES 0.0.0.0:443

Já tentei ufw permitir 443 / tcp mas o nmap ainda não está mostrando 443 como uma porta aberta.

Também tentei sudo iptables -A ENTRADA -p tcp --dport 443 -j ACCEPT sem sucesso.

Qualquer ajuda será apreciada.

    
por kikemx78 20.10.2016 / 08:57

2 respostas

0

EACCES significa que é proibido escutar na porta 443. Isso ocorre porque você não está executando seu aplicativo como root. Portas abaixo de 1024 são portas reservadas e somente o root pode usá-las.

Tentar alterar as regras de firewall não tem efeito. firewall deixa o pacote passar ou pará-los. Não permite que alguém ouça uma porta em particular.

Solução: execute seu código com o sudo. mas isso é um risco de segurança. Portanto, seu aplicativo deve alternar para outro usuário (ou encontrar algum outro mecanismo do qual não tenho conhecimento para descartar privilégios) assim que possível, logo após o sucesso da escuta.

Como isso é complicado, uma boa solução é

  • seu aplicativo escuta na interface de loopback em uma porta não privilegiada, diga por exemplo 127.0.0.1:10443
  • Você configurou um servidor da Web para o proxy pedidos de 0: 443 a 127.0.0.1:10443. nginx vem à mente, mas muitos outros servidores são utilizáveis para esta tarefa. Basta escolher o seu favorito.

Se você quiser SSL na porta 443, o que geralmente é o caso, você também deve configurar certificados (criar um auto-assinado ou comprar um ou melhor ainda, obter um certificado gratuito de criptografia), configurar protocolos, cifras disponíveis etc. ... Isso também é complicado.

Exemplo de arquivo de configuração mínimo do nginx que precisa ser melhorado e deve funcionar (não pode testar agora): server { server_name me.example.com; listen 0.0.0.0:443 ssl; ssl_certificate /etc/mycerts/fullchain.pem; ssl_certificate_key /etc/mycerts/privkey.pem; ssl_session_timeout 30m; ssl_session_cache shared:SSL:400k; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; server_tokens off; charset utf-8; location / { proxy_pass http://127.0.0.1:10443/; } }

    
por exore 20.10.2016 / 09:51
0

Thanx @exore, resolvi o problema com

sudo setcap 'cap_net_bind_service = + ep' $ (readlink-f $ (qual nó))

O problema foi, creio eu, uma instalação manual de node.js. Ele vem como padrão na última versão do Ubuntu, mas eu não sabia disso e o instalei novamente pelo terminal.

Você pode ir aqui para toda a discussão.

link

Atenciosamente,

    
por kikemx78 20.10.2016 / 18:00