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/;
}
}