Ruby - RubyGems で SSL 証明書チェック!

Updated:


Ruby が2012年4月20日に 1.9.3-p194 にアップデートされ、パッケージ管理の RubyGems も 1.8.23 にアップデートされました。

当方の自作自宅サーバ(当記事執筆時点、CentOS6.2)も Ruby_1.9.3-p194, RubyGems_1.8.23 にしています。(ちなみに、Rails は 3.2.3)

その RubyGems ですが、今回の 1.8.23 では SSLサーバ検証の修正がされているようです。

Ruby や Rails で RubyGems パッケージをインストール(アップデート)したりする場合( “gem install (update)” や “bundle install (update)” )に、今までどおりではエラーが発生するようになります。 Ruby on Rails で今までどおり “bundle install” した場合↓

# bundle install
Fetching gem metadata from https://rubygems.org/.........
Using rake (0.9.2.2) 
Using i18n (0.6.0) 

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed
(https://bb-m.rubygems.org/gems/multi_json-1.2.0.gem)
An error occured while installing multi_json (1.2.0), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.2.0'` succeeds before bundling.

以下、対応方法です。

対応方法

Ruby 1.9.3-p194 リリース にも説明がありますが、SSL証明書のチェックを行わない方法とSSL証明書のチェックを行う方法があります。

0. 動作確認環境

今回は、CentOS 6.2 (i386) と Scientific Linux 6.2 (x86_64) (どちらも SSL サーバ証明書の設定有り)で確認しました。

1. SSL 証明書のチェックを行わない場合

SSL サーバ証明を使用していなかったり、使用していてもチェックを行わない場合。 ユーザルートの “.gemrc” または “/etc/gemrc” ファイルに以下のように記述する。

# vi ~/.gemrc
:ssl_verify_mode: 0

2. SSL 証明書のチェックを行う場合

SSL サーバ証明書を使用していて、チェックを行う場合。 ユーザルートの “.gemrc” または “/etc/gemrc” ファイルに以下のように記述する。

# vi ~/.gemrc
:ssl_verify_mode: 1
:ssl_ca_cert: /etc/pki/tls/certs/server.crt

“/etc/pki/tls/certs/server.crt” はサーバー用証明書ファイルで、フルパスで指定する。

その他

ちなみに Cygwin 環境ではこのような対応は不要でした。 Windows ネイティブ側の Ruby は最近触っていないので、今回の対応も未確認です。


これで、SSL 接続エラーは発生しなくなりました。

以上。





 

Sponsored Link

 

Comments