RMI 기반 애플리케이션에 SSL 인증서를 추가했는데 테스트 서버에서 제대로 작동했기 때문에 이를 프로덕션 서버에 배포한 후 모든 요청은 프로덕션에서 수행되는 로컬 연결의 경우에도 SSL 핸드셰이크를 기다리고 있습니다. 서버에 있는 일부 iptables 규칙으로 인해 발생합니다.
기본적으로 모든 포트는 차단되며 필요한 포트만 허용됩니다. 우리가 구현하는 기본 iptables 규칙은 다음과 같습니다 /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
나는 iptables 규칙에 대해 잘 모르지만 SSL 핸드셰이크 중에 일부 요청이 Digicert로 전송될 수 있거나 허용되지 않는 일부 포트나 프로토콜(예:)을 사용하고 일부 누락된 iptables 규칙으로 인해 이 문제가 발생했다고 생각합니다. 기다리고 있어."
이미 이와 동일하거나 유사한 문제를 겪은 사람이 있습니까?
정보
서버: CentOS 6.5 x64 by digitalocean. 애플리케이션: JVM 1.8, RMI(씬 데스크탑 클라이언트용) 및 Tomcat(8080)(웹 사용자용) 기반. Tomcat 연결은 로컬 rmi 연결을 사용합니다.
고쳐 쓰다
다음 규칙을 추가하면 작동합니다.
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
다만 악수는 조금 느렸다.