Eu adicionei um certificado SSL a um aplicativo baseado em RMI, e ele está funcionando normalmente no servidor de teste; portanto, depois de implantá-lo nos servidores de produção, todas as solicitações estão aguardando o handshake SSL, mesmo conexões locais, são causadas por algumas regras do iptables servidores têm.
Basicamente, tudo é bloqueado e apenas permite as portas necessárias. Abaixo das regras padrão do iptables executadas por /etc/rc.local
:
#Flush all
iptables -F
iptables -t nat -F
#Chains
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Allow local connections
iptables -A INPUT -s localhost -d localhost -j ACCEPT
iptables -A INPUT -s $ip -d $ip -j ACCEPT
#RMI ports (for rmi app)
iptables -A INPUT -p tcp --dport 1826 -j ACCEPT
iptables -A INPUT -p tcp --dport 1827 -j ACCEPT
iptables -A INPUT -p tcp --dport 18026 -j ACCEPT
#allowing RMI socket port range
iptables -A INPUT -p tcp --destination-port 20000:65535 -j ACCEPT
#Allow apache, https, tomcat ports
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#Allow pings
iptables -A INPUT -p icmp -j ACCEPT
#Allow DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 953 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 953 -j ACCEPT
Eu não tenho muito conhecimento sobre as regras do iptables, mas acho que no momento do handshake SSL, alguma requisição pode ser enviada para o Digicert ou usa alguma porta ou protocolo que não é permitido (por exemplo), e alguns A falta da regra iptables está causando essa 'eterna espera'.
Alguém já teve problemas semelhantes ou semelhantes como este?
Info
Servidores: CentOS 6.5 x64 em digitalocean. App: JVM 1.8, baseado em RMI para thin clients desktop e Tomcat (8080) para usuários da web. As conexões do Tomcat usam conexões rmi locais.
Atualizar
Funciona adicionando estas regras:
iptables -A INPUT -s secure.globalsign.com -j ACCEPT
iptables -A INPUT -s ocsp.globalsign.com -j ACCEPT
iptables -A INPUT -s ocsp2.globalsign.com -j ACCEPT
iptables -A INPUT -s crl.globalsign.com -j ACCEPT
No entanto, o aperto de mão ainda é um pouco lento.