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と接続すると問題は消えます。
サーバー側からは、奇妙なものは見当たりません。問題は、マシンでSSL3を無効にしたときに始まりました。
Apt-getのビルドに問題があるかもしれませんか?
Apt-cache showpkgが提案する他のバージョンもテストしますが、問題は残ります...
これは、クライアントとサーバー間の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
で確認してください。