10

たとえば、OpenSSL1.0.0eを実行しているマシンに対してcurlを実行すると、次のようになります。

curl -v https://shumaker.flexrentalsolutions.com

OpenSSL 0.9.8rを実行しているマシンで、次のエラーが発生します。

About to connect() to shumaker.flexrentalsolutions.com port 443 (#0)
*   Trying 50.112.122.15... connected
* Connected to shumaker.flexrentalsolutions.com (50.112.122.15) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
* Closing connection #0

OpenSSL 1.0.0eを実行しているマシンで同じcurlコマンドを実行すると、コマンドは問題なく完了します。

2つのOpenSSLバージョン間の互換性がないため、ハンドシェイクが正しく完了していないようです。

これを修正する方法はありますか?

4

5 に答える 5

13

プロトコルでopensslバージョンを設定すると、次のように機能します。

コマンドラインの場合:

curl -v -3 https://shumaker.flexrentalsolutions.com

PHPの場合:

curl_setopt($ch, CURLOPT_SSLVERSION,3);
于 2013-06-21T12:27:20.423 に答える
6

これは(OpenSSL)バグであり、まだ開いています。詳細は、このcurlバグレポートに掲載されています。

詳細は「mancha」によってOpenSSL-devに投稿されました。

于 2011-12-23T22:41:43.973 に答える
0

これは良い解決策ではありませんが、ホイールスピンよりも優れているので、ここに答えとして追加します。

可能であれば、mod_sslの代わりにGnuTLSモジュールを使用してください。OpenSSLにバインドされていないため、この恐ろしい、日を浪費する問題は適切に回避されます。

于 2012-01-18T19:40:57.063 に答える
0

現在、POODLE vulnerability多くのサイトが無効になっているためですSSL 3.0

あなたはTLSこのように使うべきです:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1)

それでもエラーが発生する場合(Apacheの場合)vhost、正しい設定を取得しているかどうかを確認してくださいServerName

于 2015-05-21T12:20:20.980 に答える
0

一部のhttpsサーバーでbrewを使用しているOSXでこの問題が発生し、brewは内部でcurlを使用します。これは、OpenSSL/0.9.8rでスタックしているOSX10.7.5でのみ発生することに注意してください。私はアップグレードしますが、アップルはこのiMacで> 10.7をサポートしていません!

私の修正は、curlをbrewでアップグレードすることでした。これにより、バージョンが1.0.2fにアップされますが、幸いなことに、curlのbrewインストールはアップグレードされません。

brew install curl
于 2016-02-02T07:34:04.453 に答える