xreaサーバーでrubyのTwitterライブラリを使ってSSLエラーの対処メモ
昨日、xreaのサーバーにruby1.9.3をインストールしたのは、Twitter API 1.1対応のTwitterライブラリを使いたかったからなんです。で、ふつーにgem install twitterで入れて、さあここからつぶやき放題だぜ...と思ったらこんなエラーにお出迎えされました。じぇじぇじぇ。
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Twitter::Error::ClientError)
で、ふつーの対処法ならこれだと思います。
xreaのサーバーですと...
ruby19 -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' "/usr/local/openssl/cert.pem"
ってことになってます。ちなみに指し示されたファイルはありません。うちは間借りしてるだけのユーザーなので、この場所になにかを入れたり出したりできません!
以下、苦し紛れの対処法です。流儀としてすごく間違ってるかもしれません。net/httpsでちゃんと書くべきなのかも。
~/.bashrcに書き込む
TwitterのCA証明書ファイルの取得方法は以下を参考にしました。
この証明書ファイルを~/.bashrcに環境変数SSL_CERT_FILEとして書き込むことでエラーを回避できました。下記の1行を~/.bashrcに追加します。
export SSL_CERT_FILE=/virtual/ユーザー名/パス/twitter.pem
参考にしたのはこちら
だが、しかし...
cronを使う時は
cronを使う時は~/.bashrcを読みません。定期的に何度も犯している間違いでデジャヴ感まんさい。
なのでcrontabで指定しているshell script内で
env SSL_CERT_FILE=/virtual/ユーザー名/パス/twitter.pem スクリプトの呼び出し
としてみました。やれやれ。