読者です 読者をやめる 読者になる 読者になる

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 スクリプトの呼び出し

としてみました。やれやれ。