O redirecionamento de porta 443 para 8443 não funciona para minha instância do Tomcat

O redirecionamento de porta 443 para 8443 não funciona para minha instância do Tomcat

Estou usando o Ubuntu Headless Server 18.04 em um servidor host dedicado. O hoster possui firewall externo, onde abri as portas 8443.443 (tcp). No meu servidor Ubuntu estou usando iptables, onde redirecionei a porta 443 para 8443 com a tabela nat.

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 8443

também abri nas portas de entrada e saída 443 e 8443.

ainda posso acessar a instância do Tomcat com example.com:8443 e não tenho problemas, mas example.com não responde. olhando no iptables, não vejo nenhum pacote descartado. Na minha instância do Tomcat, não altero o server.xml. O Conector escuta 8443. Não sei, onde está o problema? Espero que alguns especialistas possam me ajudar a resolver o problema.

atenciosamente

barba Negra

Responder1

O que você realmente precisa aqui é de um proxy reverso (como o Nginx) que possa fazer a terminação SSL para você na porta 443 e depois passar a solicitação ao Tomcat na porta 8443.

SSL/TLS é complexo e, na minha opinião, confiar no IPTABLES para lidar com o handshake SSL e enviar sua solicitação ao aplicativo Tomcat não é uma boa ideia.

Se você realmente precisa usar IPTABLES, conecte-se ao serviço openssle descubra exatamente o que está acontecendo. Relate a saída aqui e mais ajuda poderá estar disponível.

openssl s_client -connect www.example.com:443

O problema também pode ser que você esteja usando a nattabela. Meu entendimento é que as regras para esta tabela só serão aplicadas se as solicitações estiverem sendo roteadasatravéso servidor, em vez de ser roteado para uma porta diferente no mesmo endereço IP.

Um proxy reverso removeria grande parte dessa complexidade e forneceria muito mais funcionalidades (por exemplo, limitação de taxa, controle de acesso, etc.) para inicializar.

Responder2

Isso pode depender de qual interface o seu Tomcat está vinculado. Se estiver vinculado à interface de loopback, isso não funcionará.

Principalmente o alvo REDIRECT é usado com uma interface especificada como:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8443

(substitua eth1 pela interface de rede real em que o Tomcat está sendo executado)

REDIRECT é um método conveniente para o alvo DNAT, portanto, se o procedimento acima não funcionar, você pode tentar algo como:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8443

(substitua 10.0.0.1 pelo endereço IP da sua máquina)

informação relacionada