_ に上げようとした。
_ 失敗した。
_ mod_mpm_event.so がビルドされてないなぁ。なんでだろ。perfork か worker に変えれば動くんだろうけど、腑に落ちないのでちと調べてみる。
_ config.log から。
うーむ。configure の中身をさらに見ていくと、configure:25851: checking if event MPM supports this platform configure:25866: result: no - APR skiplist is not availableこんな感じ。たしかに apr 1.4 だなぁ。が、この記述を信じると 1.3 以下でも問題ないはずで、1.5 に上げればいいというわけではなさげな感じ。つーか、2.4.6 では apr 1.4 でもちゃんと event MPM が動いてるんだけど、何が違うんだ? と思ってさらに調べてみたら、2.4.7での修正点として、case $APR_VERSION in 1.4*) apr_has_skiplist=no ;; *) apr_has_skiplist=yes esac*) APR 1.5.0 or later is now required for the event MPM.とか書いてあった。configure の書き方がおかしいな。正しくは、じゃなきゃおかしいでしょう。case $APR_VERSION in 1.5*) apr_has_skiplist=yes ;; *) apr_has_skiplist=no esac_ で、何で apr 1.5 が必要になったのかがわからんのですがどうしてなんでしょうね。
_ openssl の今回の heartbleed バグ。これはやばいなぁ。SSL なサーバが確実に持っていて漏れたらマズい情報といったら秘密鍵だけど、それ以外にもいろんな情報が漏れる。誰でも知ってる超大手で、他人のユーザ/パスワードが見えちゃったなんて話も聞こえてきてるし。
_ 対処方法はバージョンを上げるか機能を無効にしてコンパイルしなおすかしかないみたいなこと言われてるけど、あれって TLS の拡張機能なんで、TLS を使わない(SSLv3 だけ使う)ようにすれば、とりあえず回避できるんじゃないかなぁ。どうかなぁ。もちろん、SSLv3 を強制するといろいろデグレードしちゃうんで、それを推奨するつもりはまったくないんだけど、どうせけっこうな割合のクライアントが SSLv3 だし、入れ替えできずに放置しておくよりはいくぶんマシだと思うんだよね。試しに SSLv3 で heartbeat やってみると、
てな感じで、-tls1 だと通るけど、-ssl3 だと上のようにネゴに失敗する(openssl クライアント側も heartbeat 対応してる必要あり)。この状態でもメモリの読み出しができちゃったりするんだろうかどうなんだろうか。> echo B | openssl s_client -connect maya.st:443 -ssl3 HEARTBEATING 34379118248:error:1413B16D:SSL routines:SSL_F_TLS1_HEARTBEAT:peer does not accept heartbearts:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/t1_lib.c:2566:_ …うーん、ソースを眺めてみたけど、TLS extension をパースしてる関数が呼ばれるのが
が真のときだから、TLS 1.x だけじゃなくて SSLv3 でもいけちゃいそうだなぁ。じゃあ、なんで上の例ではコケたんだろう。if (s->version >= SSL3_VERSION)_ うん、まったく確信もてないので、やっぱり穴なしバージョンにとっとと入れ替えるべしだな。仮に SSLv3 で回避できたとしても、それまでに漏れたかもしれない情報は取り返せないので、証明書の再発行/失効はやらんといかんし。ユーザとしても、サーバに預けてある情報が漏れたかもしれないと考えていろいろ行動せにゃあかん。
_ あと、どうでもいいけど、 heartbleed.comの心臓出血ロゴ、どっかで見たことあるような、としばらく考えて思い出した。 アイリスオーヤマのロゴだ。とんだとばっちりだな。
_ で、この件でいろいろ調査してたら、centos でいつのまにやら楕円曲線暗号が使えるようになっていたことに気がついた。openssl 自体ではちゃんと楕円も使えるのに、これまでわざわざ機能を off にしてビルドしたバイナリを配ってた。
_ fedora の方では このへんで due to possible patent issues とかなんだとうだうだ議論していて、裏ではそれとまったく歩調を合わせずに rhel 6.5 で ECC 使えるようにするよーとかやっててわけわからん(これは openssl ではなく nss についてだけど)。
_ これまで使えないようにしていた理由、そして、このバージョンから使えるようにした理由について、ちゃんとした説明になってるようにはとても見えないんだけど、いったいどういうことなんだか。
_ まあそれでも、DNSSEC で署名サイズを小さくしたいので楕円暗号を使いたいけど、使えない環境が多いから普及しないだろう、といわれていたハードルのひとつがこれで取り払われたわけなので、一歩前進ではある。