Iptables 让我很困惑,有人可以给我一个命令来从服务器的端口 443 打开传出的 ssl 连接吗?
它由服务器上的脚本使用,目前,当我在端口 80 上执行它时,它工作正常,在端口 443 上它只是挂起,所以我假设端口没有为传出连接打开。
答案1
在 /etc/sysconfig/iptables 中添加行:
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 443 -j ACCEPT
并运行命令:
iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 443 -j ACCEPT
答案2
假设你在自己的服务器上运行了一个脚本,该脚本正在与 1)远程 Web 服务器建立某种连接,该服务器的 http 端口为 80,https 端口为 443;或者 2)该脚本正在连接回本地服务器上运行的 Web 服务器,该服务器的端口为 80 或 443
根据您的描述,“在端口 443 上它只是挂起”,您能够与端口 443 建立 TCP 连接,但不知何故 SSL 协议协商失败或出现其他问题。
为了测试这一点,您可以从命令行执行类似这样的操作;
# telnet www.yourservergoeshere.com 443
Trying 74.125.227.18...
Connected to www.l.google.com.
Escape character is '^]'.
并查看它是否真正连接到远程 443 端口。如果您收到以下消息
connected to www.someserver.com
那么问题就不在于你的 iptables。
如果是这样,则更可能是你的脚本无法使用 SSL/HTTPS
如果您的 iptables 的默认 INPUT 规则是 DROP,那么您的脚本可能会在等待 TCP 超时长度之后才无法连接。