curl 出现 SSL 密码错误

curl 出现 SSL 密码错误

我正在尝试抓取一个网页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

由于我可以使用 Firefox 连接到服务器,因此我添加了密码狐添加在。这使我能够确定 Firefox 在连接时使用的密码。就我而言,密码是 TLS_RSA_WITH_AES_256_CBC_SHA。一点谷歌搜索让我找到了密码列表这表明 TLS_RSA_WITH_AES_256_CBC_SHA 是 AES256-SHA。然后我只需告诉curl使用新密码

curl --ciphers AES256-SHA -k https://1.1.1.1/login.html

由于这是一个公共wifi登录门户,所以我不担心安全问题。如果您担心安全性,您应该确保您使用的密码是合适的。

答案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

相关内容