公開鍵証明書とは、あるエンティティが発行したデジタル署名のある文書で、別のエンティティの公開鍵 (およびほかの情報) が特定の値であることを証明するものです。
ここで使う重要な用語のいくつかについて、説明します。
基本的に、公開鍵を使った暗号化では、ユーザの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、通信するエンティティの間で事前に関係が確立されていたり、使われているすべての公開鍵を収めた信頼できるリポジトリがあるということは、保証できません。証明書は、公開鍵の配布に関するこの問題の解決策として開発されました。現在では、「証明書発行局 (CA)」が「信頼できる第三者」として機能します。CA は、信頼されて、ほかのエンティティのために証明書に署名する (証明書を発行する) エンティティ (ビジネスなど) です。CA だけが、法的な契約による義務の下で、有効かつ信頼できる証明書を作成するものと見なされています。VeriSign、Thawte、Entrust など、数多くの公的な証明書発行局があります。Netscape や Microsoft の認証サーバや Entrust 社の CA 製品などを使って、組織用に独自の証明書発行局を運営することもできます。
現在、X.509 証明書のアプリケーションでもっとも身近なものは、SSL プロトコルをサポートする Web ブラウザ (Netscape NavigatorTM や Microsoft Internet Explorer など) です。SSL (Secure Socket Layer) は、ネットワークトラフィックにプライバシーと認証機能を提供するセキュリティプロトコルです。SSL をサポートするブラウザは、SSL をサポートする Web サーバとの間でだけ、このプロトコルを使うことができます。
X.509 の証明書に依存する技術としては、ほかに次のものがあります。
証明書を取得する基本的な方法としては、次の 2 つがあります。
CA に証明書の発行を依頼する場合は、自分の非公開鍵と自分についての情報を提出します。keytool や、証明書署名要求 (CSR) の生成をサポートするブラウザなどのツールを使ってこの情報にデジタル署名し、CA に送ります。CA は証明書を生成して、送り返します。
自分で証明書を生成する場合は、同様の情報に加えて、さらに若干の情報 (証明書の有効期間、シリアル番号など) を用意し、keytool などのツールを使って証明書を作成します。 自己署名の証明書では受け入れられない場合があります。CA が提供する価値の 1 つは、中立で信頼できる紹介サービスを提供することであり、その一部は、認証サービス業務 (CSP) の中で公開されている検証要件に基づいています。
X.509 の標準では、証明書に入れることのできる情報が定義されており、その記述方法 (データ形式) も記述されています。X.509 に準拠する証明書はすべて、署名のほかに、次のデータを含んでいます。
CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=USここでは、被認証者の一般名、組織単位、組織、および国が示されています。
「X.509 Version 1」は 1988 年から利用されており、広く採用されているもっとも一般的な標準です。
「X.509 Version 2」は、被認証者名と発行者名が再度使用される可能性を想定して、被認証者と発行者の一意な識別子の概念を導入したものです。ほとんどの証明書プロファイル文書では、名前を再使用しないことと、証明書で一意な識別子を使わないことが、強く推奨されています。Version 2 の証明書は、広くは使われていません。
「X.509 Version 3」は最新 (1996) のバージョンで、拡張情報の考え方をサポートしています。つまり、誰でも拡張情報を定義し、認定に加えることができます。現在使われている一般的な拡張情報としては、「KeyUsage」(鍵の使用を「署名のみ」など特定の目的に限定するもの) と「AlternativeNames」(DNS 名、電子メールアドレス、IP アドレスなど、ほかのアイデンティティも公開鍵に関連付けられるようにするもの) があります。拡張情報は、「重要 (critical)」に指定することで、確認および強制的な使用が必要であることを示すことができます。たとえば、重要に指定され、「KeyCertSign」に設定された KeyUsage 拡張情報が証明書にある場合、この証明書が SSL 通信の間に提示されると、その証明書は破棄されます。これは、証明書の拡張情報によって、対応する非公開鍵は証明書への署名にだけ使用でき、SSL では使用できないことが示されているためです。
証明書のデータはすべて、ASN.1 と DER という 2 種類の関連標準を使って符号化されます。「Abstract Syntax Notation 1 (ASN.1)」は、データを記述するものです。「Definite Encoding Rules (DER)」は、そのデータを格納および伝送するための単一の方法を記述するものです。この組み合わせは、「強力かつ柔軟」であると同時に「わかりにくく使いづらい」ものであると言われています。
IETF PKIX の作業班は、インターネット公開鍵インフラストラクチャ (PKI) の標準化を進めています。われわれはこの作業に常に注目しており、規定されている「X.509 Certificate and CRL Profile」をサポートしています。
java.security.cert
にある Certificate API には、次のクラスとインタフェースが含まれています。
キーストアは保護されたデータベースで、企業で使う鍵と証明書が格納されています。キーストアへのアクセスはパスワードで保護されています。パスワードは、キーストアの作成時にキーストアの作成者によって定義され、現在のパスワードを提示した場合にだけ変更できます。さらに、キーストアに格納されている非公開鍵を、専用のパスワードで個別に保護できます。
keytool を使うと、ファイルとして格納されている X.509 v1、v2、および v3 の証明書の表示、インポート、およびエクスポートが可能で、自己署名による新しい v1 証明書を作成することもできます。具体的には、keytool のドキュメント (Solaris 用) (Windows 用) の「例」を参照してください。
Copyright © 1995-98
Sun Microsystems, Inc.
All Rights Reserved.
|
![]() Java ソフトウェア |