web-dev-qa-db-ja.com

openssl / curlエラー:SSL23_GET_SERVER_HELLO:tlsv1アラート内部エラー

Ubuntu 14.04から、opensslまたはcurlを使用してサーバーの1つに接続すると、非常に奇妙な問題が発生します

実行中:

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日、すべてOK
  • Ubuntu 14.04の最新の安定版リリース、OpenSSL 1.0.2d 2015年7月9日、すべて問題ありません。

サーバー側からは、奇妙なものは見当たりません。問題は、マシンでSSL3を無効にしたときに始まりました。

Apt-getのビルドに問題があるかもしれませんか?

Apt-cache showpkgが提案する他のバージョンもテストしますが、問題は残ります...

8
cecemel

これは、クライアントとサーバー間の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バージョンを提供するだけでは十分ではないことに注意してください。代わりに、私のシステムで1.0.1f-1ubuntu2.15を与えるdpkg -l opensslで確認してください。

4
Steffen Ullrich