Windows環境のでAWS SDK for Rubyを使う時のSSL_connectエラーの対応

Linux上でAWS SDK for Rubyを使って開発したRubyスクリプトWindowsで動かそうとしたところ、SSL_connectのエラーが出てハマったので、対応メモです。


例えばこんな感じのスクリプトを実行します。

require 'aws-sdk-core'
cred = Aws::SharedCredentials.new
client = Aws::EC2::Client.new(credentials:cred, region:'ap-northeast-1')
client.describe_instances

そうすると以下のようなエラーがでました。

Seahorse::Client::NetworkingError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate v
ify failedfrom C:/Ruby22/lib/ruby/2.2.0/net/http.rb:923:in `connect'


色々調べたところ、Windows版のRubyにバンドルされている証明書に問題があるとのことです。そんな時のためにAWSSDKには証明書がバンドルされているようです。使い方は以下の通り。

Aws.use_bundled_cert!

具体的に先ほどのスクリプトに組み込むとすると以下のようになります。

require 'aws-sdk-core'
cred = Aws::SharedCredentials.new
Aws.use_bundled_cert!
client = Aws::EC2::Client.new(credentials:cred, region:'ap-northeast-1')
client.describe_instances