SSL/TLS の導入 (3)

前へ << SSL/TLS の導入 (2) SSL/TLS の導入 (4) >> 次へ

自己署名の場合の警告

前節で RSA 秘密鍵と証明書の組み込みがおわりました。 しかし ブラウザで https://ホスト名/ にアクセスすると以下のようなダイアログが表示されると思います。

IE6 での警告

Firefox での警告

実験サイトならともかく、商用サイトでこういう表示が出るのはよくありません。

この例では、IE6 のメッセージの

「このセキュリティ証明書は、信頼する会社から発行されていません。 証明書を表示して、この証明機関を信頼するかどうか決定してください」
の方がわかりやすく、的確です。 ブラウザは「証明書の (server.crt) の内容がおかしい」と警告しています。

前節で証明書の内容を確認しましたが、以下の「Isuuer」 (証明書発行者=認証局) が信頼する会社ではない、 とブラウザは警告しています。

% openssl x509 -in server.crt -text -noout
Certificate:
    Data:
        ...
        Issuer: C=JP, ST=Kanagawa, L=Kawasaki, O=68user's page, CN=X68000.q-e-d.net
        Validity
            Not Before: Mar 19 18:27:33 2005 GMT
            Not After : Mar 19 18:27:33 2006 GMT
        Subject: C=JP, ST=Kanagawa, L=Kawasaki, O=68user's page, CN=X68000.q-e-d.net
        ...

そもそも証明書の目的は、「実在性の証明」です。ひらたくいうと、

  • でっちあげの会社でないことを証明する
  • 偽の組織が、他社の名前をかたってサーバを運営していることを防ぐ
という狙いがあります。認証局は、サーバを運営している組織に電話をかけ、 本来の会社がサーバを運営していることを確認します。 登記簿謄本や印鑑証明を提出しないとならない場合もあります。

署名という作業は秘密鍵による暗号化にすぎませんので、OpenSSL を使って簡単に署名できます。 例えば当ページ管理人が認証局を立ち上げ、

  • 電話確認不要
  • 登記簿不要
  • 住所も名前も入力不要
  • Web 上に CSR を張り付けるだけで、わずか 1秒で証明書を発行
  • お値段は 1年間でなんと 1,000円
と宣伝すれば、おそらく客はたくさんやってきます。 しかしこれは、確認作業をしていないに等しいでしょう。 こういう認証局が存在しては、証明書の意義がなくなります。

このような質の低い認証局を排除するため、あらかじめブラウザには ルート証明書 (rootCA) と呼ばれる認証局が登録されています。

ルート証明書

ブラウザにあらかじめ組み込まれているルート証明書を確認するには以下のようにします。

IE6 に組み込まれているルート証明書
(ツール -> インターネットオプション -> コンテンツタブ -> 証明書ボタン)

Firefox に組み込まれているルート証明書
(ツール -> オプション -> 詳細 -> 証明書マネージャボタン)

ルート証明書の中から適当に証明書を選んで、詳細情報を表示してみましょう。

Firefox に組み込まれている VeriSign の証明書

発行本 (Issuer) と発行対象 (Subject) が全く同じです。 これではさきほど行った自己署名と同じです。 我々が自己署名した証明書は警告が出るのに、VeriSign が自己署名したものは警告が出ません。 ずるいですね。不公平です。

しかし、これはやむをえません。我々はブラウザ製作者 (Microsoft など) に信頼されていませんが、 VeriSign は信頼されているからです。

つまり証明というのは以下のような「信頼」のつながりで成り立っているのです。

  • 我々ブラウザ利用者は Microsoft や Mozilla Foundation などのブラウザ製作者を「信頼」する。
  • ブラウザ製作者は、VeriSign などの「信頼できる認証局」のみをブラウザのルート証明書として組み込む。
  • ルート証明書に組み込まれている認証局は、「信頼できる企業・個人」のみに証明書を発行する。
ただし、ここでいう「信頼」というのは「悪いことをしない」とか「善人である」という意味ではありません。 認証局は企業・個人の「実在性」をもって「信頼する」かどうかを決定します。ブラウザ製作者のひとつである Microsoft は明確な基準を決め、それに合致すればルート証明書として組み込むようにしています (後述)。

もちろん、あなたが Microsoft や Mozilla Foundation などのブラウザ製作者を信頼できないなら、 それでも構いません。ブラウザのインストール直後にルート証明書を確認し、信頼できないものは 全て削除すればよいのです。

なお、ルート証明書とは、ブラウザにあらかじめ組み込まれている証明書のことを指すのではありません。 他の証明書に署名する役割を持った、自己署名の証明書のことをルート証明書といいます。

ルート証明書をブラウザに組み込んでもらうには?

もし当ページ管理人が認証局を立ち上げたとして、 どうやったら IE や Firefox にあらかじめルート証明書として組み込んでもらえるのでしょうか。

Microsoft は Microsoft ルート証明書プログラム として基準を明確化しています。簡単にまとめると、

  • 「WebTrust for CA 監査」という監査を受けること (WebTrust の web サイトは こちら)。
  • ルート証明書が Microsoft ユーザに役立つこと。例えば特定組織内専用のルート証明書はダメ。
  • Microsoft に金を払う必要はないが、「WebTrust for CA 監査」を受ける際には金を払う必要があると思われる。
という感じです。
ところでセコムトラストネットは 2004/3/29 に
日本初となる WebTrust 規準に適合した「信頼されるルート認証局」を構築し(略) このルート認証局は「Security Communication Root CA」の名称で、 マイクロソフト Internet Explorer をはじめとする各種ウェブブラウザに登録されることになります。
書いていますが、 1年後の 2005/3/20 現在では、まだ IE のルート証明書には含まれていません。 いつごろ Windows Update で「Security Communication Root CA」の証明書が配布されるのでしょうか。

2007/7/17 追記。Windows Update の2007年7月の月例パッチとして

OU = Security Communication RootCA1 O = SECOM Trust.net C = JP
というルート証明書が配布され、IE でセコムトラストネットの証明書が利用可能になりました。 Microsoft ルート証明書プログラムのメンバ (2007 年 1 月) にも記載がありますので、2007/1 の段階で既に利用可能だったのかもしれません。

Mozilla や Firefox を開発する Mozilla Foundation も独自の基準を持っており、

で読むことができます。 ルート証明書を Mozilla や Firefox に組み込んでもらうには、bugzilla 上で依頼を出せばよいようです。
前へ << SSL/TLS の導入 (2) SSL/TLS の導入 (4) >> 次へ

ご意見・ご指摘は Twitter: @68user までお願いします。