SSL学習

今度学会でセキュリティっぽい発表をする予定なのだが、実を言うとSSLの原理もよくわかってないというしょぼい私。こりゃあかんということで、自宅サーバをSSL対応させてみようとした。

WEBみてopensslコマンドをぐちゃぐちゃやったり、apache設定ファイルをぐちゃぐちゃやったりしてなんとなく、ブラウザアドレスバー赤い状態でのアクセスはできるようになった。が、それじゃSSLの原理がわかったとはとてもいえない。ちゃんとオレオレCAを立てて、サーバ証明書をそこで署名して、・・とやりたい。

ということでやってみた。

名前ベースのバーチャルホストでSSL

プランとしては、夢は無限大。サブドメインを切りまくって、

あたりをすべてSSLアクセス可能にしようと思った。

がひとつの問題にぶつかる。

名前ベースのバーチャルホストでのSSL利用は自由が利かない。

自由が利かないというあいまいな表現にしているが、Apacheのドキュメントなんかには、「できません」ときっぱり書いてある。だが、実際いろいろ調べると、無理やりやる手段はいくつかありそうなのでこういう表現にしてみた。

IPアドレス複数持ってIPベースのバーチャルホストにすればそもそも無問題なのだが、マンションのプロバイダ、固定グローバルIP契約はしたが、IPアドレス2つ以上くれるサービスはなさそうな気がする。っていうかあっても、そんなお金かけたくない。

以下の解決可能性があるかなぁとおもう。

  1. *.forest-pierrot.netを証明するワイルドカード証明書?(こんなことできるんか?)
  2. 443以外のポートも使う。
  3. ssl.forest-pierrot.netというサブドメインをつくって、sslここでのみで使い、今後いろいろ立ち上げるサービスで共用する。

2は見た目がスマートじゃない、3もスマートじゃない。1ができればいいが、そもそもそんなこと出来るのか?

→(1/30追記)できました。

オレオレ認証局

と、そんな高度な問題に悩む前に、ひとつのドメインでもいいから、きれいにSSLをやってみたい。まだブラウザのアドレスバーが白いままSSLできてないんだから。

ということで、こんなことをしてみた。

  • Shimono CAなる怪しいルートCAをを作って、
  • このCAでサーバ証明書CSRを署名して
  • 出来た証明書をApacheに組み込んで、
  • ルートCAの証明書をder形式にして
  • こいつをブラウザに組み込んで
  • アクセスしてみる。

しかし、何が起こったかというと、

  • 今までアドレスバーが赤かったもののアクセスできたのに
  • ルート証明書を組み込んだとたん、403が帰ってくるようになった。

うーむ。Apacheのログもまともに出てこないし、よくわからん。
引き続き勉強・勉強