HTTPSサーバに接続

HTTPSのサイトに接続して内容を取得する、というrubyスクリプトを書く必要があり、調べてみたら、次のサイトがとても参考になりました。

参考というか、ほぼそのまま使える情報だったのですが、もうちょっと具体的にメモしておきます。

httpsのサイト

httpsで公開されているサイトということで、今回は https://www.amazon.com/ につないでみたいと思います。

サイト証明書を取得する

まず、証明書が必要になるので、サイトに接続し、ブラウザの機能で取得します。
Firefoxの場合、ウィンドウ下部に下図のような南京錠アイコンが出ています。

この南京錠アイコンをダブルクリックするとページ情報のセキュリティページが見られます。そこの「証明書を表示...」ボタンを押します。「証明書ビューア」が開きますので、「詳細」タブを押し、その下部にある「エクスポート...」ボタンを押して証明書をエクスポートします。
ファイルの種類を「証明書パスを含む X.509 証明書 (PEM)」にして出力します。今回は、"www_amazon_com.crt"と名付けてスクリプトのあるディレクトリに保存します。

ソースを準備

アクセスする以下のようなrubyスクリプトを準備します。

require 'net/https'

https = Net::HTTP.new( 'www.amazon.com', 443 )
https.ca_file = './www_amazon_com.crt'
req = Net::HTTP::Get.new('/')

https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 15

https.start{ |h|
  response = h.request( req )
  
  print "Content-type: text/html\n\n"
  print response.body
}

以上で完了です。