@acidlemonについて
|'-')/ acidlemonです。鎌倉市在住で、鎌倉で働く普通のITエンジニアです。
30年弱住んだ北海道を離れ、鎌倉でまったりぽわぽわしています。
単に先週末が旅行で忙しかったからそれとくらべて静かだなぁとおもっただけなんですが。
とりあえず土曜日はなぜかふと思い立って「そうだ、SSLで暗号化してやれば会社から家のサーバにつないであれこれやっても内容は把握されないぞ! (リクエストのURLも暗号化されるし!)」とか謎のことを考えついて、とりあえず家のサーバにSSLを導入してみることに。
ここでオレオレ証明書を使えばサクッとできるんでしょうが、etch世代のdebianはapacheが2.2になっててapache2-ssl-certificateコマンドがなくなってて簡単には作れないのねー。opensslコマンドをガシガシ叩く必要があるらしい。まぁ最初からさらさらオレオレ証明書をやる気もなかったので、どうせopensslコマンドをうつのならーと、かっこよくCAcertで証明書をつくりました。はやく各ブラウザのデフォルトのルート証明書にはいんねーかな。
さて、証明書をとったところで次はVirtualHostと組み合わせて使えるように…って、オレSSLの仕組み全然しらなかったからアレなんだけど、SSLってVirtualHost基本的にできないらしい。なーんでかというと、ブラウザ側からのリクエストに含まれるHostセクションってSSLの場合暗号化されてるので、それはつまりSSLのハンドシェイクを先に確立しなきゃいけない。つまり、サーバ側でHostセクションをみて証明書を選択するようなことはできない、という話らしい。
ただ最近はクライアントがSNIに対応していればSNI対応サーバ(現状apacheのみ?)との間で選択的に証明書を変えてSSLセッションを張れるらしい。まぁあとは証明書のドメインをワイルドカード指定でとるとかいう手もあるんだそうだ。
ちなみに、オレはひとつのサブドメインだけ443を開いて、それ以外のサブドメインは443を蹴るようにしたかったんだけど、apacheで443をlistenしてる以上その他のサブドメインで443を蹴るっていうのは無理なわけでした…。いや、設定すればできそうなんだけどね。よくわかんないので、別のサブドメインから443ポートつっついちゃうと証明書関係のエラー(接続ドメインと証明書ドメインの不一致)がでちゃうっていう。
とりあえず不特定に443をつっつかれるとSSLでも中を見られてしまうのはまずいので、認証をかけて他人から見れないようにブロック。最初Basic認証にしてたんだけど、Basic認証ってパスワードは平文でながれるわけです。SSLはともかく、普通のhttpならまず推奨されない。そこで、SSL(暗号化)+Digest認証(ハンドシェークを暗号化)でオレ最強じゃねwwwwwwとか思ったけどやってみたらSSL+Digest認証できなかった(理由はしらんけど、きっとSSLハンドシェークとDigestのハンドシェークがかち合ってるんでしょう)。まぁSSLいれてるならBasic認証で十分なわけで、普通にBasic認証にもどした。
まぁそんなわけでまだまだなんですがそんな感じで土曜日がおわってしまいました。
日曜も日曜でごろごろしながら時折掃除したりゲームしたりFlashのActionScript 3.0関連のお勉強をしたり…。体を休めるという意味ではいい感じでリラックスできる休日だったかも。
そういえばBoost本の第2販がでてたので楽天で注文したり、実家から「8/12にお前のとこ行こうと思うのにホテルの予約がどこも満杯なんでなんとかしてくれー」とかいう謎の悲鳴が届いたので「んなわけねーだろーお盆の札幌でホテルが満杯になるわけがねぇー」とか思いながら楽天で空室さがして予約したりしたりもしました。Boost本はこの前ヨドバシでみつけてちらっと立ち読みしたんだけど、いつのまにかboost1.34でてたんだねー。全然しらなかったや。最近家でC++書いてないからなぁ…。