`s3_website push`がs3_website.jarのダウンロード時にSSL証明書エラーになる問題とその解決策


問題

s3_website push を実行できなくなった。

[info] Downloading https://github.com/laurilehmijoki/s3_website/releases/download/v2.7.3/s3_website.jar into /home/user/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/s3_website-2.7.3.jar

と表示される「s3_website.jarダウンロード処理」の際に、

SSL_connect returned=1 errno=0 state=SSLv3 read serv
er certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

というエラーが出て異常終了するようになってしまった。

要するにOpenSSLで証明書エラーが生じている。

解決策

個人的に「最も簡単」と感じる解決策が、GitHub上のs3_websiteのissue #142のコメントに書かれていた。

具体的には、ダウンロードエラーになるs3_website.jarをブラウザでダウンロードして、gemのディレクトリ (~/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/s3_website-2.7.3) に設置した。

これで s3_website push できるようになった。

代案

ウェブ検索すれば、いろいろな代案が紹介されている。

今回紹介した方法には、「gemをupdateする度にやらなければならない」という欠点がある。本来自動で行われべき処理を手作業で代替しているのだから当然だが。

より「真っ当な解決策」としては、

  • OpenSSLが利用する証明書を正しく設定する
  • 証明書が古ければ更新する

などが挙げられる。