前田です。
ruby-devに振ります。

NAKAMURA, Hiroshi wrote:
>> 1.8では互換性のため、enable_post_connection_checkはデフォルトではfalseに
>> なっていますので、チェックを有効にするには
>>
>>   http.enable_post_connection_check = true
>>
>> のように設定する必要があります。
> 
> 正確には常にチェックを行い、「不正な証明書である」となった場合に、上記の
> 値がtrueだと例外で停止。falseだと停止せず、警告だけ出して続行するという
> ことですね。

その通りです。

> RFC2818的には"SHOULD"になってるチェックですが、これは1.8.6、
> 1.8.5のメンテナの判断、ということでしょうか。
> 
> # 事前に知ってりゃこんなフラグなくさせたのに。verify_mode = nilで十分。

security MLの議論の時には気づかなかったのですが、verify_modeを指定できる
なら、わざわざフラグを増やしてまで互換性を維持する必要はなかったかもしれ
ないですね。

> さて、http.rb以外に、1.8だとimap.rbとdrb/ssl.rbが、trunkだと加えて
> smtp.rbとpop.rbが、同じ問題を持っています。pop.rbとimap.rbについては、
> 以前に田中さんが指摘してたはず。http.rbを問題にしたのであれば、こいつら
> も対応が必要です。

はい、ご指摘の通りです。
imap.rbについては私の怠慢です。

> で、今日ちょっと、OpenSSLに詳しいゆぞさんと話してたんですが、どうやって
> 対応しますかね。
> 
> A. 問答無用に全部post_connection_checkを追加して回る。
> B. どうしても互換性が、という人のために、
>    環境変数ENABLE_POST_CONNECTION_CHECKを見て、それが'no'だったら
>    チェックしないようにする。
> C. 各ライブラリのチーフメンテナに依頼し、それぞれ判断してもらう。
> 
> Cは修正が長引くから駄目でしょう。1.8もtrunkも、http.rbを含めてAでいいと
> 思うんだけどな。どうですかmputさん。

デフォルトはVERIFY_NONEのままという理解で合っているでしょうか?

あと、ふと思ったのですが、Aで行くならOpenSSL側で対応することはできない
でしょうか。