我正在尝试抓取一个网页curl
$ curl -k https://1.1.1.1/login.html
卷曲:(35)错误:14092105:SSL例程:ssl3_get_server_hello:返回错误的密码
该错误对我来说毫无意义。我用 来下载网页没有问题firefox
。我该如何调试该问题?
$ curl -V
卷曲 7.53.1 (x86_64-pc-linux-gnu) libcurl/7.53.1 OpenSSL/1.0.2k zlib/1.2.11 libpsl/0.17.0 (+libicu/58.2) libssh2/1.8.0
协议: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
功能: 异步 DNS IPv6 大型文件 GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS 代理 PSL
答案1
请参考:https://stackoverflow.com/questions/34176433/lwp-iosocketssl-fails-with-ssl3-get-server-hellowrong-cipher-returned 您应该检查 SSL,它使用的是 IP 还是主机名?如果使用主机名,最好使用主机名而不是 IP。
答案2
答案3
SSL 是一个复杂的协议,有很多选项。客户端和服务器需要协商选择兼容的选项。这变得特别困难,因为 SSL 的目标之一是防止中间人攻击一种可能的攻击方法是扰乱协商(这必须在建立安全通信之前进行),以强制使用不安全的参数。
SSLv3是协议的过时版本。如今 TLS 1.2 是首选,1.0 也可以(1.1 也是如此,但在实践中很少见)。如果协商下降到 SSLv3,则服务器严重过时或出现问题(可能是因为服务器配置错误)。
获取有关正在发生的情况的更多信息的有用工具是Wireshark。告诉它使用过滤器记录端口 443 上到 1.1.1.1 的 TCP 流量host 1.1.1.1 and port 443
。 Wireshark 应自动检测 SSL 连接,并显示每条消息的详细分析。在 SSL 连接中,客户端首先发送一条“client hello”消息,指示其支持哪些设置,然后服务器回复一条“server hello”,在客户端支持的设置中进行选择。这里看来服务器选择了客户端不支持的东西,导致协议降级。
答案4
curl -d“提交=接受&按钮点击=4&err_flag=0&network_name=Guest%20Network”--ciphers AES256-SHA -k -X POSThttps://1.1.1.1/login.html