4

私のレガシー Ruby アプリケーションの 1 つは、まだ Ruby 1.8.7 を使用しています。サードパーティの Web サービスで多くの HTTP リクエストを作成し、そのうちのいくつかは SSL 経由です。

これらのサードパーティ サービスは、POODLE の脆弱性が原因で SSLv3 のサポートを終了しており、クライアントにパッチを適用して接続を継続したいと考えています。

Ruby の標準ライブラリNet::HTTPには、使用する SSL バージョンを変更する方法がないようです。

Ruby のopenssl( ssl-internal.rb ) には、バージョンを変更する方法があります。残念ながら、これはNet::HTTP( https.rb ) によって公開されていません。

私たち (Ruby 1.8.7 のユーザー) はめちゃくちゃですか?

編集:実際、TLSv1サーバーがサポートしていない場合、クライアントはに切り替えているようSSLv3です。Nginx の背後に、SSLv3 をサポートしていない SSL 対応の Web サイトがあり、1.8.7 クライアントが TLSv1 に切り替わり、リクエストが機能することを確認しました。自分で確認したい場合は、こちらをご覧ください: https://serverfault.com/questions/620123/how-can-i-let-nginx-log-the-used-ssl-tls-protocol-and-ciphersuite

4

1 に答える 1

2

実際、サーバーが SSLv3 をサポートしていない場合、クライアントは TLSv1 に切り替えているようです

それはもっと逆です。SSL ハンドシェーク内で、クライアントはサーバーにできること (プロトコル、暗号) を示し、サーバーはこの中からできる限り最善のものを選択します。通常、クライアントは、クライアント自体を特定のプロトコルに制限しない SSLv23 にデフォルト設定されています。サーバーが TLSv1 を提供する場合はそれを継続し、サーバーが SSLv3 のみを提供する場合は SSL 3.0 を使用します。

クライアントを制限して SSL 3.0 を許可しない場合は、ssl_options を設定して SSLv3 を無効にする方法についてhttps://stackoverflow.com/a/24237525/3081018を参照してください。

于 2014-10-30T06:49:32.157 に答える