LoginSignup
17
17

More than 5 years have passed since last update.

RubyでTwitterを SSLではじかれる件(Windows)

Last updated at Posted at 2015-02-08

RubyでTwitterを利用するも早速挫折

まずコードを


require "twitter"


client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "略"
  config.consumer_secret     = "略"
  config.access_token        = "略"
  config.access_token_secret = "略"
end

client.home_timeline.each do |tw|
   puts tw.text
end

ここまではなんとかなったものの

SSLっぽいエラーが吐かれてしまった。


以下のとおりである
キャプチャ.JPG

このように一杯書いてある(小並感)

どうもSSLv3を使っていることに問題があるそうだ。

※追記(wktk氏に感謝)

上位規格の TLS 1.2 から 1.1, 1.0, SSL 3.0 までフォールバックするように
なってるから v3 自体は直接関係ない

証明書の仕組みの話で、信頼するルート証明書のリスト (pem ファイル) が手元に存在せず、サーバーが提示する証明書が正当か検証できないためエラーになっていた

参考URL
Transport Layer Security @Wikipedia

SSLエラーを何とかしたい


とりあえずhome_timelineの上の行に

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

を入れると取得できた。これでは危険なのでSSL認証の問題を探ることに。
ここなどを参考にした。

Windowsでgem installするとSSLエラーが出る場合の解決策

RubyでTwitterにポスト(未完)

rubyでSSL利用時に証明書エラーが発生する場合の対応

どうも

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

を入れて出てきたパスに
http://curl.haxx.se/ca/cacert.pem
を保存すればよいとわかった。

SSLエラー対処を実際にやってみる


実際にやってみた

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

キャプチャ.JPG

すると上図のような見たこともないディレクトリが出てきた。
早速ディレクトリを作成し、PEMファイルを入れてみた。

キャプチャ.JPG

さてSSLの問題も解決したから、早速ファイルを書き換えて実行

やっぱりだめでした

キャプチャ.JPG

あっさり解決


以下のようにコマンドライン上で打ち込んだ。

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x64-windows/openssl/1.0.0o/ssl/cert.pem

お気づきになられたであろうか。上記のエクスプローラー図では
cacert.pem
となっている

これを
cert.pem
に名前を変えてあっさり解決

アホなミスもクリティカルエラーになるので注意すると堅く誓う

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17