X.509証明書の管理

目次

42.1. デジタル証明書の原理
42.2. CA管理用のYaSTモジュール

多くの認証メカニズムで、暗号化処理が利用されています。この方法では、所有者に暗号鍵を割り当てるデジタル証明書が重要な役割を果たします。これらの証明書は通信に使用され、また企業IDカードなどにも利用されています。一般的に証明書の生成と管理は、証明書を商用サービスとして提供する公式機関によって行われています。ただし、たとえば会社の個人データを第三者機関に渡したくないような場合などには、社内で証明書の生成と管理が行われることもあります。

YaSTには、証明書用の2種類のモジュールが用意されています。これらのモジュールは、デジタルX..509証明書に関する基本的な管理機能を提供しています。以降の各項で、デジタル証明書の基礎と、この種類の証明書のYaSTを使った作成、管理方法について説明します。詳細については、http://www.ietf.org/html.charters/pkix-charter.htmlを参照してください。

デジタル証明書の原理

デジタル証明書は、不正なユーザによるデータへのアクセスを防止するために、暗号化処理を使ってデータを暗号化します。ユーザデータはまたはキーと呼ばれる、第2のデータレコードを使って暗号化されます。この鍵を使ってユーザデータに数学的な処理が行われ、元の内容を確認できない暗号化されたデータが生成されます。現在では、非対称暗号方式(公開鍵方式)が一般的に使用されています。鍵は、常に対で使用されます。

Private Key (秘密鍵)

秘密鍵は、その所有者が安全に保管する必要があります。何らかの理由で秘密鍵が公開されてしまうと、その鍵を使った暗号の機密性は保証されず、暗号化に費やす労力が無駄になってしまいます。

Public Key (公開鍵)

公開鍵は、鍵の所有者が第三者に使わせる目的で公開します。

鍵の正当性

公開鍵は幅広く使われるため、さまざまな公開鍵が出回っています。この暗号方式を正しく使用するには、使用する公開鍵が、実際に目的の鍵所有者によって公開されたものかどうかを確認する必要があります。ユーザへの公開鍵の割り当ては、信頼できる組織または機関からの公開鍵証明書により確認されます。このような証明書には、鍵の所有者名、対応する公開鍵、および証明書を発行した人物または組織の電子署名が含まれています。

一般的に、公開鍵証明書を発行、署名する信頼できる機関は、証明書の発行、取り消し、および更新など、さまざまな面で証明書管理作業を担当する、認証基盤の一部となっています。このような認証基盤は、通常「PKI」または「公開鍵基盤」と呼ばれています。代表的なPKIとしては、OpenPGP標準規格があります。この規格では、特定の機関ではなく、ユーザ自身が証明書を発行します。これらの証明書は、「信頼の連鎖」中の他のユーザまたは組織により署名されることにより、信頼できるものとなります。

X.509公開鍵基盤(PKIX)は、IETF(Internet Engineering Task Force)により定義された代替モデルで、現在一般的に利用されている大半のPKIのモデルとなっています。このモデルでは、階層ツリー構造中の認証局(CA)によって認証が行われます。ツリーのルートには、ルートCAがあります。このCAは、下位のすべてのCAを認証します。そして、最下位レベルのCAが、ユーザ証明書を発行します。ユーザ証明書は、ルートCAに至るまでの証明により信頼できるものとなります。

このようなPKIのセキュリティは、CA証明書の信頼度によって異なります。証明書の利用目的/方針をPKI顧客に明示するために、PKIオペレータはCPS(Certification Practice Statement:認証局運用規定)を定義します。CPSには、証明書の管理手続きや認証局の運用方法などが定義されています。これにより、PKIだけが信頼できる証明書を発行できることが保証されます。

X.509証明書

X.509証明書は、さまざまな固定フィールドと、必要に応じて追加されたエクステンションから成り立っているデータ構造です。固定フィールドには、おもに鍵所有者名、公開鍵、および証明書を発行したCAに関する情報(名前や署名など)が含まれます。セキュリティ上の理由から、証明書には一定の有効期限があります。そのため、フィールドにはこの有効期限も記載されています。CAは、この有効期限内における証明書の妥当性を保証します。通常、有効期限が切れる前に新しい証明書を作成して配布するには、PKI(発行元CA)が必要になります。

エクステンションには、その他の情報が含まれています。エクステンションに「critical(重要)」が指定されている場合、アプリケーションはそのエクステンションを評価する必要があります。アプリケーションがこのエクステンションを認識できない場合は、その証明書を拒否する必要があります。signature (署名)やencryption (暗号化)などのエクステンションは、特定のアプリケーションに対してのみ利用されます。

基本的なX.509証明書バージョン 3のフィールドを、表 42.1に示します。

表 42.1. X.509v3証明書

フィールド

内容

バージョン

証明書のバージョン(例:v3)

Serial Number

一意の証明書ID (整数)

署名

証明書に署名するために使われるアルゴリズムのID

[発行者]

発行元認証局(CA)の一意の名前(DN)

Validity

有効期間

件名

所有者の一意の名前(DN)

Subject Public Key Info

所有者の公開鍵およびアルゴリズムのID

Issuer Unique ID

発行元認証局の一意のID (オプション)

Subject Unique ID

所有者の一意のID(オプション)

Extensions

KeyUsage「 (鍵の使用目的)や『BasicConstraints』 (基本的な制約)などの任意の付加情報


X.509証明書のブロック

証明書の有効期限が切れる前に、その証明書の信頼性が失われた場合は、それをすぐにブロックする必要があります。たとえば、秘密鍵が何らかの理由により公開されてしまった場合などに、証明書をブロックします。特に、ユーザ証明書ではなく、CAに秘密鍵が所属しているような場合は、証明書をブロックすることが非常に重要になります。このような場合、該当するCAから発行されたすべてのユーザ証明書をすぐにブロックする必要があります。証明書がブロックされると、PKI (責任のあるCA)はCRL (証明書取り消しリスト)を使って、この情報をすべての関連するユーザに知らせる必要があります。

これらのリストはCAからCDP(CRL Distribution Points:CRL配布ポイント)に、定期的に提供されます。必要に応じて証明書のエクステンションに、CDP名を指定することができます。このようにすれば、アプリケーションは最新のCRLを使って妥当性を検証することができます。これを実現する手段の1つとして、OSCP(Online Certificate Status Protocol)を使用する方法があります。CRLの正当性は、発行元認証局の署名により保証されます。X.509 CRLの基本的な部分を表 42.2. 「X.509証明書取り消しリスト(CRL)」に示します。

表 42.2. X.509証明書取り消しリスト(CRL)

フィールド

内容

バージョン

CRLのバージョン(例:2)

署名

CRLに署名するために使われるアルゴリズムのID

[発行者]

CRL発行者(通常は発行元CA)の一意の名前(DN)

This Update

このCRLの公開日時(日付、時刻)

[次の更新]

次回のCRL公開日時(日付、時刻)

取り消された証明書のリスト

各エントリには、証明書のシリアル番号、取り消し日時、およびオプションでエクステンション(CRLエントリエクステンション)が含まれています。

Extensions

任意のCRLエクステンション


証明書とCRLのリポジトリ

CAの証明書とCRLは、リポジトリを使って、一般からアクセスできるようにする必要があります。証明書やCRLの偽造は署名により防止できるため、リポジトリ自体には特にセキュリティを適用する必要はありません。それよりも、できる限り簡単かつ素早くアクセスできなければなりません。このような理由から、証明書はしばしばLDAPまたはHTTPサーバにより提供されます。LDAPの詳細は、第36章 LDAP—ディレクトリサービスを参照してください。HTTPサーバについては、第40章 Apache HTTPサーバを参照してください。

独自のPKI

YaSTには、X.509証明書を管理するための、基本的なモジュールが用意されています。基本的な管理作業には、おもにCAやサブCA、およびその証明書の作成作業が含まれます。単純に証明書やCRLを作成、配布するのとは違い、PKIのサービスは非常に複雑です。PKIを運用するには、証明書やCRLを連続して更新していくための、入念に検討された管理基盤が必要になります。この基盤は、商用のPKI製品により提供されています。また、一部の作業が自動化されているものもあります。YaSTには、CAと証明書を作成、配布するツールが用意されています。ただし現時点では、そのバックグラウンドとなる基盤は提供されていません。小規模なPKIをセットアップする場合は、現行のYaSTモジュールを利用することができます。ただし、公式の、または商用のPKIをセットアップする場合は、商用製品を使用する必要があります。