13

この問題に関する多くの投稿をフォローしましたが、どれも役に立ちませんでした。最も単純なirbコマンドを使用して接続しようとしています:

require 'open-uri'
open ('https://aristo4stu3.bgu.ac.il')

奇妙なことに、私が試した他の https uri では問題なく動作しました (つまり、https://google.com )。

デバッグ目的で、次を使用して SSL 検証を無効にしようとしました。

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

どちらも役に立たなかったようです。

私のセットアップは(AWS上で)です:

$ rvm -v

rvm 1.21.3 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.04
Release:    13.04
Codename:   raring

完全なログ:

2.0.0-p247 :001 > require 'open-uri'
 => true 
2.0.0-p247 :002 > open('https://aristo4stu3.bgu.ac.il')
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=unknown state: (null)
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:851:in `start'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:313:in `open_http'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:708:in `buffer_open'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:210:in `block in open_loop'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:208:in `catch'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:208:in `open_loop'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:149:in `open_uri'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:688:in `open'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:34:in `open'
    from (irb):2
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'
4

4 に答える 4

18

問題は、ターゲット サイト がaristo4stu3.bgu.ac.ilSSL/TLS ハンドシェイクにうるさいことのようです。OpenSSL の異なるバージョンで次の OpenSSL コマンドを実行すると、2 つの異なる結果が得られました。

openssl s_client -connect aristo4stu3.bgu.ac.il:443

これは、OS X 10.7.5 上のストック OpenSSL 0.9.8x に接続します。ただし、OpenSSL 1.0.1e を使用して接続することはありませ。その場合、サーバーは Client Hello を受信した直後に (Close Notify アラートを送信して) 接続を閉じます。

私は Wireshark でパケットをキャプチャしました。これら 2 つのバージョンが送信するものの違いは、0.9.8x が TLS 1.0 を介して SSLv2 Client Hello アドバタイジング サポートを送信しているのに対し、1.0.1e は TLS 1.2 を介して TLSv1 Client Hello アドバタイジング サポートを送信していることです。

1.0.1e に TLS を使用しないように指示した場合:

openssl s_client -connect aristo4stu3.bgu.ac.il:443 -no_tls1

これにより、SSL 3.0 を介して SSLv3 Client Hello アドバタイジング サポートに正常に接続されます。

ちなみに、私のローカル Ruby はopen-uriあなたのサイトへの接続に成功しています:

$ irb
>> require 'open-uri'
=> true
>> open('https://aristo4stu3.bgu.ac.il')
=> #<StringIO:0x10271fa90>
>> require 'openssl'
=> false
>> OpenSSL::OPENSSL_VERSION
=> "OpenSSL 0.9.8r 8 Feb 2011"
>>

したがって、示されたアプローチは次のようです。

  1. サーバーをアップグレードして、より多くの Client Hello バリアントを処理するか、または
  2. 古い OpenSSL ライブラリを使用する ruby​​ をインストールするか、
  3. プログラムを変更して、別の Client Hello を送信します。

open-uriモジュールには、通信に使用される SSL/TLS バージョンを設定するオプションがないようです。サーバーを変更できない場合は、別のモジュールまたはライブラリを使用して接続を確立するかopenssl、別の Client Hello を使用するようにモジュールにパッチを当てる方法を見つける必要があります。

于 2013-06-28T18:13:41.137 に答える
4

ここで問題と解決策の良い記事を見つけました。http://blog.55minutes.com/2012/05/tls-error-with-ruby-client-and-tomcat-server/

問題を解決する TLDR コード スニペット。

http = Net::HTTP.new(host, port)
http.use_ssl = true
http.ssl_version = :SSLv3
http.start { ... }
于 2013-12-13T04:33:34.533 に答える
4

Mac を使用していて、それが OSX 証明書の問題である場合 (私の場合)、次のコマンドを実行して修正できます。

rvm osx-ssl-certs update all

https://rvm.io/support/fixing-broken-ssl-certificatesを参照してください

于 2015-12-10T00:38:30.860 に答える
3

http.use_ssl = true同じメッセージを受け取りましたが、SSL 以外の接続を設定していたことが判明しました。

于 2015-01-14T14:29:43.463 に答える