PKIというよりSSLにある勘違いであるが、オレオレ証明書を使うべきでないという考え方が広まってくると、今度は、自分専用のサーバなのに、「オレオレ証明書じゃだめなのか?」と考えてしまい、「自分専用なのに何万円も払って証明書を買わないといけないなんてのは、どう考えてもおかしい! 何か間違ってる!」といった思考に至ることがありそうだ。
自分専用であればオレオレのサーバ証明書で運用してかまわない。ただし、ブラウザの警告を無視して「はい」を押してはいけない。「能動的な盗聴」の被害に遭うおそれがあるという点で、SSLの機能は完全には働かないからだ。
こういうとき、Webブラウザが Firefoxであれば、次の手順で設定することで、自作のサーバ証明書で正しく安全に運用できる。
まず、サーバに自作の証明書と秘密鍵をセットする。そして、その証明書を手作業で(ネットを使わずに)運んできて、ブラウザにインポートする。インポートの手順は以下の通り。
メニューから「オプション」を開き、「詳細」を選択して、「証明書マネージャ」ボタンを押す(図1)。
証明書マネージャで、「サイト証明書」タブを選び、「インポート」ボタンを押す。
ファイル選択ダイアログが現れるので、手作業で運んできた証明書ファイルを選んで開く。図3のようにインポートされる。
インポートした項目を選択して「設定」ボタンを押すと、「サイト証明書に対する信頼性の設定」という設定ウィンドウが現れる。
ここのデフォルトは「この証明書が本物であると信頼しない」になっているので、「信頼する」に変更して「OK」を押す(図4)。
これで、サーバにアクセスすると警告なしに正常に SSL接続される。
ここで重要なのは、インポート先が「認証局証明書」ではないということだ。自分で作ったオレオレ認証局証明書を「認証局証明書」ストアにインポートする方法でも、同様に正常なSSL接続を実現できるが、その設定をすると、万が一秘密鍵が流出したときに、あらゆるサイト(銀行とかネットショップとか)の偽証明書に騙される(もしくは能動的盗聴をされる)リスクが生じてしまう。それに対し、オレオレサーバ証明書を「サイト証明書」ストアに登録するこの方法であれば、万が一秘密鍵が流出しても、自分用のサーバへのアクセスにリスクが生じるだけで済む。
この方法が妥当なのは、自分ひとりで使うからだ。サーバに証明書を設定するのが自分であるなら、その証明書を運んでブラウザにインポートする作業の手間は問題にならない。
複数人で使う場合はどうか。全員に証明書を手渡しできるのであれば、この方法でもよいかもしれない。しかし、大規模な人数となってくると、手渡しにかかるコストが高くなり、商用認証局からサーバ証明書を購入して運用した方が安くなるだろう。
なお、インポートする前にサーバにアクセスしたときに出るブラウザの警告で、図5のように、「今後この証明書を受け入れる」を選ぶことで、上に書いた手順(サイト証明書ストアへインポートし、「この証明書が本物であると信頼する」を設定)と同じ設定になる。
しかし、これは、信頼できない通信路のネットワーク経由で証明書を運んでいるのだから、もしこの時点で中間者攻撃を受けているのなら、将来にわたって攻撃され続けることになるので、避けるべきである。
そうした事態が発生している確率は小さいだろうという判断から、手抜きをして、図5の方法でインポートすることもアリかもしれないが、そのリスクを理解した上で行わなければならない。サーバをセットアップするような技術者が自分が使うためだけに行うのであればそれもよいだろうが、一般のユーザ向けに使わせるのであれば、図5の方法は避けるべきだ。意味も分からず何でも「今後受け入れる」を押すようになってしまうに違いない。それを避けるために、証明書を手渡しして、手作業でインポートし、設定させるのがよい。
ちなみに、ここまでの話はブラウザが Firefoxの場合であるが、Internet Explorerの場合はどうかというと、なんと、この機能が存在しないのだ。
図6のように、IEの証明書マネージャには、サイトを個別に受け入れるための証明書ストアが存在しない。
このことが、誤ったPKIの使い方を蔓延させるきっかけになったとも言える。IEでのアクセスを前提とすると、自作のサーバ証明書で運用しようとすれば、オレオレ認証局の証明書をルート認証局としてブラウザにインポートせざるを得なくなる。
どうしても、IEを前提としてオレオレ証明書で運用したいなら、次の方法がある。自作のサーバ証明書に自作の認証局で署名したら、署名した直後に認証局の秘密鍵を消去してしまうことだ。こうすることで、秘密鍵が流出したときのリスクが、上のFirefoxでサイト証明書にインポートするときと同じになる。
ただし、ルート証明書をインポートするというハイリスクな行為が普通のものだと麻痺させてしまうおそれがあるので、自分専用でない限り避けるべきだろう。
というわけで、自作証明書で運用したいなら、「Internet Explorerでのご利用はサポートしていません」とお断りしよう。