ディジタル証明書はSSL/TLSにおいて認証機能を実現するために利用されていると以前の記事で説明しました。サーバーの認証に用いる証明書をサーバー証明書、クライアントの認証に用いる証明書をクライアント証明書と呼びます。

ディジタル証明書には階層構造があり、証明書の位置する階層によって呼び方が異なります。階層構造の最も上位に位置する証明書をルート証明書、最も下位に位置する証明書をエンドエンティティ証明書と呼びます。エンドエンティティ証明書として、サーバー証明書やクライアント証明書等があります。

ルート証明書

ルート証明書とは、自分で「私が言うことは信頼できる!」と主張することが許されている認証局(ルート認証局)が発行した自分自身(ルート認証局)の身元を証明する証明書のことです。

ディジタル証明書によるサーバーやクライアント認証は、ルート証明書を信頼するという前提の上で成り立つものです。

証明書というのは、誰でもが簡単に署名できては、その信頼性を確保することはできません。証明できるのは、公の機関である認証局(CA)であるべきです。
最上位に位置するルート認証局は、ベリサインに代表される公的な認証局や企業が運営しています。当然ですが、ルート認証局と名乗るためにはWebTrust for CAという厳正な監査基準に基づく審査を受け、それにパスする必要があり、敷居はとても高いです。

  • VeriSign社
  • GeoTrust社
  • Cyber Trust社
  • Microsoft社
  • SECOM社(日本)
  • etc

これらのルート認証局が証明書を発行した「子」認証局があり、「子」認証局が証明書を発行した「孫」認証局・・・というような階層構造になっています。階層の最上位に位置する証明書は、階層構造の基礎(根)となることからルート証明書と呼ばれています。

下位の認証局(CA)は上位の認証局に証明書を発行してもらうことで、その信頼性を担保しています。階層構造の最上位に位置する認証局をルート認証局と呼び、ルート認証局自身は自分自身に対してディジタル証明書、つまりルート証明書を発行しています。

サーバー証明書の場合、クライアントは信頼できる認証局のルート証明書を予め保持しており、信頼する者が発行した証明書は信頼できると考えます。またそれと同様に、「信頼するルート認証局が信頼した子認証局が発行した証明書は信頼できる」と考えるため、サーバー証明書の発行者をたどっていき、ルート証明書をクライアントが信頼している場合、そのサーバー証明書は信頼されます。

ルート認証局の確認方法

SSL/TLSを使用するソフトウェアの代表としてWebブラウザがあります。ルート証明書はWebブラウザにもあらかじめ情報が登録されています。例えば、Internet Explorerに設定されているルート認証局は以下の手順で確認できます。

  • インターネットエクスプローラーの「インターネットオプション」から「コンテンツ」「証明書」をクリック
  • 「信頼されたルート証明機関」タブをクリック

ブラウザに登録されるルート証明書は、ブラウザのバージョンアップなどに伴って取捨選択されます。新たなルート証明書の追加や、安全性に疑いのある証明書の削除などが随時行われています。

ディジタル証明書が証明するもの

ディジタル証明書は要するに自分が自分であることを証明するものです。「署名前証明書」「ディジタル署名のアルゴリズム」「ディジタル署名」で構成されます。

署名前証明書がサーバーやサーバーの所有者の情報です。サーバーのURLを表すコモンネームや有効期限、公開鍵などが含まれます。ディジタル署名のアルゴリズムに一方向ハッシュ関数が含まれています。ディジタル署名は、署名前証明書をハッシュ化してできたハッシュ値(メッセージダイジェストとも言う)を、認証局の秘密鍵で暗号化したものです。

サーバー証明書を受け取った受信者は、証明書の中に含まれるディジタル署名を認証局の公開鍵(ルート証明書)で復号し、署名前証明書と比較します。一致していれば、証明書が改ざんされていない、つまりそのサーバーが本物だということがわかります。

では、具体的に何をもって、そのディジタル証明書が正当性であると証明しているのでしょう。それは、「公開鍵」です。上記を読み取ればわかるかもしれませんが、公開鍵で復号できるのは、同じペアの秘密鍵で暗号化されたものだけです。そのため、ディジタル証明書は、公開鍵証明書とも言えます。

証明書の種類説明
ルート証明書認証局(CA)の公開鍵を証明する証明書
サーバー証明書サーバーの公開鍵を証明する証明書
クライアント証明書クライアントの公開鍵を証明する証明書

⇒次のカテゴリー「SSL/TLS通信の仕組みと流れ