Executando um servidor HTTPS Node.js como não raiz

1

Um servidor Node.js que atende um aplicativo em HTTPS pode ser executado como um usuário não raiz? O problema é que parece não haver nenhuma maneira de executar um script como este sem sudo, já que ele tem que acessar os certs.

Estou ciente de que é possível descartar os privilégios de root depois de iniciar o Node, mas gostaria de evitar isso se possível, pois isso pode levar a um comportamento inesperado.

    
por Matias Heikkilä 30.11.2016 / 18:41

1 resposta

3

O problema dos certificados é fácil de consertar, basta usá-los para o seu usuário e ajustar as permissões de acordo.

Você verá que não é possível fazer com que seu servidor ouça a porta HTTPS, 443, pois é uma opção privilegiada (< 1024).

Você pode resolver esse problema de várias maneiras, como:

  • Processa reverso na frente (Apache / nginx) encaminhando solicitações para o nodejs ouvindo uma porta mais alta

  • Encaminhamento de porta 443 - > 1443 (ou qualquer porta com mais de 1024) e nodejs ouvindo 1443

  • Usando recursos do Linux (CAP_NET_ADMIN IIRC).

Provavelmente existem outros métodos também.

    
por 30.11.2016 / 18:48