12.04 版的 openssl 1.0.1 更新破坏了 curl 命令

12.04 版的 openssl 1.0.1 更新破坏了 curl 命令

将开发服务器上的 openssl 更新为版本后1.0.1-4ubuntu5.31,包含到特定服务器的 curl 命令的脚本不再连接。我们运行了 openssl 1.0.1-4ubuntu5.25。Curl 成功执行了初始连接。当我们尝试 GET 并收到错误时,问题就出现了:

GET /some/directory/on_the_remote_server HTTP/1.1
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Host: host.connection.com
Accept: */*

* SSLv3, TLS handshake, Hello request (0):
* SSLv3, TLS handshake, Client hello (1):
* SSL read: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure, errno 0
* Closing connection #0
curl: (56) SSL read: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure, errno 0

(为保护私人信息,此内容已被净化)

我已经确认连接服务器上没有发生任何变化。任何帮助都将不胜感激,因为我找不到任何修复此错误的方法。

答案1

由于没有关于该服务器的更多详细信息,我猜测该服务器使用了较弱的 Diffie-Hellmann 密钥,并且 SSL 握手将失败,因为 OpenSSL 已修复以强制使用更强的 DH 密钥。此修复的原因是最近发布了僵局攻击

来自更新日志

  • 安全改进:拒绝小于 768 位的 dh 密钥……

受影响的只有 DH 密码。要禁用 DH 密码,您可以使用以下ciphers选项,即

  curl --ciphers 'DEFAULT:!DH' url

但您也应该修复您的服务器。有关如何修复的更多信息,请参阅这里

相关内容