Debian wheezy で aptitude upgrade やったら Ruby で一部の https にアクセスできなくなった件
原因
aptitude upgrade によって OpenSSL が 1.0.1 にアップデートされたことによって TLS 1.1、TLS 1.2 に対応したが、
Ruby 1.9.3-p194 付属の OpenSSL 拡張がそれに対応していなかった
解決
手っ取り早く OpenSSL 1.0.0j をソースコンパイルして Ruby の OpenSSL 拡張を再コンパイルして解決
コマンド
# 接続できないことを確認 $ ruby -e 'require "open-uri";require "openssl";OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE;open("https://www.sbisec.co.jp/")' -e:1: warning: already initialized constant VERIFY_PEER /usr/local/lib/ruby/1.9.1/net/http.rb:799:in `connect': Connection reset by peer - SSL_connect (Errno::ECONNRESET) from /usr/local/lib/ruby/1.9.1/net/http.rb:799:in `block in connect' from /usr/local/lib/ruby/1.9.1/timeout.rb:54:in `timeout' from /usr/local/lib/ruby/1.9.1/timeout.rb:99:in `timeout' from /usr/local/lib/ruby/1.9.1/net/http.rb:799:in `connect' from /usr/local/lib/ruby/1.9.1/net/http.rb:755:in `do_start' from /usr/local/lib/ruby/1.9.1/net/http.rb:744:in `start' from /usr/local/lib/ruby/1.9.1/open-uri.rb:306:in `open_http' from /usr/local/lib/ruby/1.9.1/open-uri.rb:775:in `buffer_open' from /usr/local/lib/ruby/1.9.1/open-uri.rb:203:in `block in open_loop' from /usr/local/lib/ruby/1.9.1/open-uri.rb:201:in `catch' from /usr/local/lib/ruby/1.9.1/open-uri.rb:201:in `open_loop' from /usr/local/lib/ruby/1.9.1/open-uri.rb:146:in `open_uri' from /usr/local/lib/ruby/1.9.1/open-uri.rb:677:in `open' from /usr/local/lib/ruby/1.9.1/open-uri.rb:33:in `open' from -e:1:in `<main>' $ # OpenSSL インストール cd /home/src wget http://www.openssl.org/source/openssl-1.0.0j.tar.gz -P archives/ tar zxvf archives/openssl-1.0.0j.tar.gz cd openssl-1.0.0j ./config shared make sudo make install # Ruby OpenSSL 拡張再コンパイル cd /home/src/ruby-1.9.3-p194/ext/openssl ruby extconf.rb --with-openssl-dir=/usr/local/ssl make sudo make install # 接続できることを確認 $ ruby -e 'require "open-uri";require "openssl";OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE;open("https://www.sbisec.co.jp/")' -e:1: warning: already initialized constant VERIFY_PEER $