Feature #2579: Net::HTTP.start("www.ruby-lang.org", use_ssl: true) で SSL 利用を可能に
http://redmine.ruby-lang.org/issues/show/2579

起票者: Yui NARUSE
ステータス: Open, 優先度: Normal

従来、Net::HTTP で https アクセスをするためには

http = Net::HTTP.new("www.ruby-lang.org", 443) # port を指定
http.use_ssl = true # use_ssl を true に
http.verify_mode = OpenSSL::SSL::VERIFY_PEER # デフォルトだと検証してくれないので変更
http.start{|h| } # やっと本題
http.finish # 破棄

などとする必要がありました。

この提案では、Net::HTTP(addr, opt){..} という呼び出し方を追加します。
opt はハッシュで、アクセサのある項目を設定する事が出来ます。

なお、折角の新 API なので、この API を使った場合、verify_mode のデフォルトが VERIFY_PEER になっています。
つまり、この API を用いた場合デフォルトで SSL 署名の有効性を検査するため、
期限切れやオレオレ証明書の場合例外が出ます。

これにより、さっきのは以下のように書けます。
Net::HTTP.start("www.ruby-lang.org", use_ssl: true){|h| }

P.S.
なお、以上の例で用いている www.ruby-lang.org は、現在 SSL 証明書が期限切れのため、
この例を今実行すると検証に失敗して例外が出ます。
今は StartCom とかだと無料で 主要環境でルート証明書が入っている Web サーバ用の SSL 証明書が取得できますから、
そういうのに入れ替えた方がいいのではないでしょうか。


----------------------------------------
http://redmine.ruby-lang.org