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

  • 16
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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
に名前を変えてあっさり解決

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