0

从具有 openssl 0.9.8k 和 curl 7.19 的机器上,我可以成功地与 8443 上的 EC2 Web 应用程序建立 https 连接。

使用 openssl 1.0.1 和 curl 7.22 的机器上的相同 curl 命令最初会失败,并出现模糊的 SSL23_GET_SERVER_HELLO:tlsv1 警报内部错误。我可以通过在 curl 命令中添加 -sslv3 来解决这个问题,这会导致 401 Unauthorized 错误。

为什么相同的命令在不同的 curl/openssl 版本中表现不同?其他可能有用的信息是我在这两种情况下都使用了 -k 选项。

假设这是一个不容易解决的低级 openssl 错误,那么在 ubuntu 上回滚版本的最简单方法是什么?还是只安装我想要的适当的 curl/openssl 软件包会更容易,但是在安装旧 curl 版本的软件包时,我如何确保它链接到旧的 ssl 版本?

4

2 回答 2

0

几件事:

既然 curl 和 openssl 是开源包,为什么不直接从源代码编译呢? http://curl.haxx.se/docs/install.html列出了如何指定使用哪个 TLS 库。

其次,我认为问题实际上是 server-side。也就是响应ClientHello,服务器返回错误信息。问题不在于较新的客户端,而在于(错误的)服务器如何响应来自较新客户端的消息(这并不少见——请参阅http://www6.ietf.org/mail-archive/ web/tls/current/msg07281.html 并注意 openssl 1.0.1 添加了对 TLS 1.1 和 1.2 的支持)。虽然这可以通过将客户端回滚到 SSLv3 来“修复”,但正确的解决方案是修复等式的服务器端。

什么软件在运行这个服务器端?你可以升级它吗?

于 2012-06-14T23:18:51.867 回答
0

红宝石救援!虽然我仍然无法通过带有 CURL 的 -sslv3 标志来获得它,但这篇文章挽救了这一天。问题是 http.ssl_version 方法不在 ruby​​ 1.8 net/https 中,因此为什么我之前错过了它,我不得不升级到 ruby​​ 1.9.2,但这似乎可以解决问题,curl 仍然失败并出现 401 错误,但现在这不是一个真正的问题,因为 ruby​​ 有效

于 2012-06-15T17:23:18.250 回答