どうして X.509 証明書について考慮しなければならないのですか。

最終更新日:1997 年 2 月 9 日

X.509 証明書についてはすでに知っておられるでしょう。知っておられる場合は、この文書を読んでX.509 証明にどのような利点があるのかを理解することができます。X.509 証明の話を耳にしたことがない場合でも、この文書を読めばインターネットのセキュリティについて多くを学ぶことができます。この文書は以下のようにいくつかの部分で構成されています。


一言で言うと、証明書とは何ですか?

ID 証明書 とは、1 つのエンティティからデジタル署名した文書のことで、他のエンティティの公開鍵が何らかの特定値を持っていることを意味しています。

この文の意味がわからない場合のために、以下に定義のいくつかを示します。

証明書は公開鍵暗号化技術に依存しています。証明について理解するためには、以下の事項だけを知っていれば十分です。 (a) 秘密鍵と公開鍵で1組になります。 (b) 秘密鍵は署名するのに使用します。 (c) 公開鍵は署名を確認するのに使用します。

これ以外に頻出する用語は 認証局 (CA)です。これらは、他の人々(エンティティ)に対して証明書を信頼して署名(発行)することができるエンティティ(たとえば企業)です。通常、公開鍵とその所有者間のバインディングを保証する一種の法的な責任を負います。 VeriSign、GTE など、多くの認証局があります。


どんなアプリケーションが証明書を使用するのですか?

おそらく、現在最もよく見かける XD.509 証明書のアプリケーションは、SSL プロトコルをサポートしている Web ブラウザ(Nescape Navigator など)でしょう。 SSL (安全ソケットレイヤ) は、使っているネットワークトラフィックにプライバシーと権限を提供するセキュリティプロトコルです。これらのブラウザでは、サポートしている Web サーバーでこのプロトコルを使用することができるだけです。

X.509 証明書に依存するその他の技術には以下があります。


どうすれば証明書を取得できますか?

証明書を取得する方法には 2 種類あります。 (1) 自分で(正しいツールを使って)作成することができます。 (2) または、誰か他の人(CA)に頼んで発行してもらうこともできます。 証明書作成プロセスでの主な入力項目は以下のようになります。

CA に証明書の発行を依頼するときは、公開鍵や自分に関する情報を提供します。ツール(Netscape Navigator 3.0 など)を使用してデジタルでこの情報に署名し、CA に送ります。(その CA が、 信頼できるサードパーティの CA サービス を提供する Verisign のような企業であることもあれば、インターネットプロバイダやその他の団体であることもあります)。CA は証明書を作成して返送します。

自分で証明を作成するときは、同じ情報に、他の情報を少し加えて(証明の有効期間、シリアル番号)、何らかのツール(javakey など)を使用して証明を作成します。すべての人が自分で署名した証明を受け入れるわけではありません。CA によって提供される値の一部は、証明要件に基づいて中立の信頼イントロダクションサービスとしての役割を果たします。これは Certification Service Practices (CSP)で公開で発行されます。


X.509 証明書の中身はどのようになっていますか?

X.509 は、証明書にどの情報が入るのかを定め、書き込む方法(データフォーマット)を記述しています。すべての X.509 証明書には署名に加えて以下のデータがあります。

  1. バージョン
    どのバージョンの X.509 規格がこの証明書に適用するのかを特定します。これは指定することのできる情報の種類に影響します。バージョン 1 は 1988 年から利用されていて広く普及しています。

  2. 件名
    公開鍵が証明によって特定されるエンティティの名称。この名称には X.500 規格を使用するので、Internet の世界で一意になることを意図しています。これはエンティティの識別名(DN)です。たとえば次のようになります。
        CN=Java Duke, OU=JavaSoft, O=Sun Microsystems Inc, C=US
    
    (これらは、共通名、団体の単位、団体、国を意味します。)

  3. 公開鍵
    . これは名前を付けるエンティティの公開鍵です。

  4. 発行者名
    証明に署名したエンティティの X.500 名。通常、これは CA です。この証明書を使用すると、この証明書に署名したエンティティを信頼すると暗示することになります。( ルートまたはトップレベル CA 証明書など、状況によっては、発行者が自身の証明書に署名することがあるということに注意してください)。

  5. シリアル番号
    証明を作成したエンティティは、他の証明と区別するために、シリアル番号を割り当てる責任を負います。

  6. 有効期間
    各証明書が有効なのは、限られた時間の間だけです。この期間は、開始の日時および終了の日時によって記述され、数秒のこともあれば、1 世紀もの長期にわたることもあります。有効期間は、証明のサインに使用される秘密鍵の強度や証明書に支払う金額などの様々な要素によって変わります。

これらの基本機能は X.509 v1 の最初のバージョンの一部です。 X.509 v2 では、特定の証明書がすでに信用できなくなっていることを判断するために CA によって使用される暗号化取り消し一覧(CRL)などの機能を追加しています。 X.509 v3(1996 年)では拡張の概念を追加しました。そのうちの keyUsage(「署名だけ」といった特定の目的に対して鍵の使用を制限する)や AltNames(DNS 名、Email アドレス、IP アドレスなどの他の名前を認める)がよく利用されています。

証明書のすべてのデータは、ASN.1/DER と呼ばれる 2 つの関連規格を使用してエンコードされます。Abstract Syntax Notation 1 はデータについて記述しています。 Definite Encoding Rules は、データを保存したり転送したりする方法について記述しています。この組み合わせは「強力で柔軟」と言われると同時に「謎が多くて使いづらい」とも言われています。ASN.1/DER 以外の規格を使用するべきだという意見はあまり多くないようです。既存のインフラなら容易に発展させることができるからでしょう。

X.509 証明書の作成、表示、インポート、エキスポートを行えるのはどんな Java ツールですか?

javakey (for Solaris) (for Windows)という名前の新しい JDK 1.1 ツールがあり、以下の目的で使用します。

javakey を使用して、ファイルとして保存された証明書の表示やインポート、エキスポートを行うことができ、新しい証明書を作成することができます。


Copyright (C) 1996, 1997 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.

Written by: David Brownell

ご意見は java-security@java.sun.com までお寄せください。