openssl / curl错误:SSL23_GET_SERVER_HELLO:tlsv1警报内部错误


9

从Ubuntu 14.04与opensl或curl连接到我们的一台服务器时,我们遇到了非常奇怪的问题

执行中:

openssl s_client -connect ms.icometrix.com:443

给出:

CONNECTED(00000003)
140557262718624:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error:s23_clnt.c:770:

执行时出现类似的错误:

curl https://ms.icometrix.com
curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error

openssl版本的输出(在客户端/服务器上):

OpenSSL 1.0.1f 6 Jan 2014

dpkg -l openssl的openssl输出:

1.0.1f-1ubuntu2

有趣的是,当与其他版本的Openssl连接时问题消失了:

  • 从Mac,OpenSSL 0.9.8zd,2015年1月8日,一切正常
  • 来自centos,OpenSSL 1.0.1e-fips,2013年2月11日,一切正常
  • 没关系,Ubuntu 14.04的最新稳定版本,OpenSSL 1.0.2d于2015年7月9日正常。

从服务器端,我们看不到任何奇怪的东西。当我们在机器上禁用SSL3时,问题就开始了。

apt-get中的版本可能有问题吗?

我们还测试了其他版本,即apt-cache showpkg提出的版本,但问题仍然存在...


看来您已被以下bug击中:bugs.launchpad.net/ubuntu/+source/openssl/+bug/861137。提到了一些解决方法。有curl --sslv3 https://ms.icometrix.com工作吗?
2015年

嗨,谢谢回复。不,这不起作用,因为我们在服务器上禁用了ssl。此外,实际上,我们并不关心curl或openssl,真正的问题是我们使用了来自python的请求,而python使用的是这个版本的openssl。因此,如果您碰巧有任何想法,请多告诉我们。我要进一步挖掘。
cecemel

Answers:


4

这看起来像客户端和服务器之间的ECDH支持问题。如果排除所有ECDH密码,则可以使用:

openssl s_client -connect ms.icometrix.com:443 -cipher 'DEFAULT:!ECDH'

我的猜测是服务器在客户端提供的25条ECC曲线中有些崩溃。浏览器仅提供很少的曲线。OpenSSL 0.9.8尚不支持任何ECC,并且RedHat / CentOS出于专利原因有默认禁用ECC的历史。我不知道为什么OpenSSL 1.0.2可以工作,因为我无权访问此版本。

请注意,仅提供OpenSSL版本通常是不够的,因为所有发行版均保留旧版本,但添加了安全补丁。而是检查dpkg -l openssl在我的系统上给出的1.0.1f-1ubuntu2.15。


thx做到了!我使用dpkg -l
cecemel的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.