JavaTM 2 Platform
Std. Ed. v1.3

java.security.cert
クラス X509Certificate

java.lang.Object
  |
  +--java.security.cert.Certificate
        |
        +--java.security.cert.X509Certificate
すべての実装インタフェース:
Serializable, X509Extension

public abstract class X509Certificate
extends Certificate
implements X509Extension

X.509 証明書の抽象クラスです。このクラスは、X.509 証明書のすべての属性にアクセスするための標準的な方法を提供します。

基本的な X.509 v3 形式は、1996 年 6 月に ISO/IEC および ANSI X9 によって策定され、以下のように ASN.1 で記述されます。

 Certificate  ::=  SEQUENCE  {
     tbsCertificate       TBSCertificate,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }
 

これらの証明書は、インターネットのセキュリティシステムで認証などの機能をサポートするために広く使われています。代表的なアプリケーションには、Privacy Enhanced Mail (PEM)、Transport Layer Security (SSL)、信頼できるソフトウェア配布のためのコード署名、および Secure Electronic Transactions (SET) などがあります。

これらの証明書は、「証明書発行局 (CA)」によって管理および保証されています。CA は、データを X.509 標準形式にしてから、そのデータにデジタル署名することにより証明書を作成するサービスです。CA は信頼できる第三者として機能し、直接には面識のない主体同士を紹介します。CA 証明書は、その CA 自身で、または「ルート」CA などのほかの CA によって署名されています。

詳細は、http://www.ietf.org/rfc/rfc2459.txt にある RFC 2459 の「Internet X.509 Public Key Infrastructure Certificate and CRL Profile」を参照してください。

tbsCertificate の ASN.1 定義は次のとおりです。

 TBSCertificate  ::=  SEQUENCE  {
     version         [0]  EXPLICIT Version DEFAULT v1,
     serialNumber         CertificateSerialNumber,
     signature            AlgorithmIdentifier,
     issuer               Name,
     validity             Validity,
     subject              Name,
     subjectPublicKeyInfo SubjectPublicKeyInfo,
     issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                          -- If present, version must be v2 or v3
     subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                          -- If present, version must be v2 or v3
     extensions      [3]  EXPLICIT Extensions OPTIONAL
                          -- If present, version must be v3
     }
 

証明書のインスタンスは、証明書ファクトリを使って生成されます。以下の例は X.509 証明書のインスタンスを生成する方法を示しています。

 
 InputStream inStream = new FileInputStream("fileName-of-cert");
 CertificateFactory cf = CertificateFactory.getInstance("X.509");
 X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
 inStream.close();
 

関連項目:
Certificate, CertificateFactory, X509Extension, 直列化された形式

クラス java.security.cert.Certificate から継承した内部クラス
Certificate.CertificateRep
 
コンストラクタの概要
protected X509Certificate()
          X.509 証明書のコンストラクタです。
 
メソッドの概要
abstract  void checkValidity()
          証明書が現在有効であるかどうかを判定します。
abstract  void checkValidity(Date date)
          指定された日付が、証明書の有効期間内であるかどうかを判定します。
abstract  int getBasicConstraints()
          クリティカルな BasicConstraints 拡張機能 (OID = 2.5.29.19) から証明書の制約のパスの長さを取得します。
abstract  Principal getIssuerDN()
          証明書から issuer (発行者識別名) 値を取得します。
abstract  boolean[] getIssuerUniqueID()
          証明書から issuerUniqueID 値を取得します。
abstract  boolean[] getKeyUsage()
          KeyUsage 拡張機能 (OID = 2.5.29.15) のビットを表す boolean 配列を取得します。
abstract  Date getNotAfter()
          証明書の有効期間から notAfter の日付を取得します。
abstract  Date getNotBefore()
          証明書の有効期間から notBefore の日付を取得します。
abstract  BigInteger getSerialNumber()
          証明書から serialNumber 値を取得します。
abstract  String getSigAlgName()
          証明書の署名アルゴリズム名を取得します。
abstract  String getSigAlgOID()
          証明書から署名アルゴリズムの OID 文字列を取得します。
abstract  byte[] getSigAlgParams()
          この証明書の署名アルゴリズムから、DER で符号化された署名アルゴリズムパラメータを取得します。
abstract  byte[] getSignature()
          証明書から signature 値 (生のシグニチャービット) を取得します。
abstract  Principal getSubjectDN()
          証明書から subject (被認証者識別名) 値を取得します。
abstract  boolean[] getSubjectUniqueID()
          証明書から subjectUniqueID 値を取得します。
abstract  byte[] getTBSCertificate()
          この証明書から DER で符号化された認証情報 tbsCertificate を取得します。
abstract  int getVersion()
          証明書から version (バージョン番号) 値を取得します。
 
クラス java.security.cert.Certificate から継承したメソッド
equals, getEncoded, getPublicKey, getType, hashCode, toString, verify, verify, writeReplace
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
インタフェース java.security.cert.X509Extension から継承したメソッド
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
 

コンストラクタの詳細

X509Certificate

protected X509Certificate()
X.509 証明書のコンストラクタです。
メソッドの詳細

checkValidity

public abstract void checkValidity()
                            throws CertificateExpiredException,
                                   CertificateNotYetValidException
証明書が現在有効であるかどうかを判定します。現在の日時が、証明書で指定される有効期間内であるかどうかを調べます。

有効期間は、証明書が有効である最初の日時と最後の日時の 2 つの日時値からなります。これは ASN.1 で次のように定義されています。

 validity             Validity

Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }

CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

例外:
CertificateExpiredException - 証明書の有効期限が切れている場合
CertificateNotYetValidException - 証明書がまだ有効になっていない場合

checkValidity

public abstract void checkValidity(Date date)
                            throws CertificateExpiredException,
                                   CertificateNotYetValidException
指定された日付が、証明書の有効期間内であるかどうかを判定します。つまり、指定された日時に証明書が有効であるかどうかを調べます。
パラメータ:
date - 指定された日時にこの証明書が有効であるかどうかを調べる Date
例外:
CertificateExpiredException - 指定された date に証明書が期限切れになっている場合
CertificateNotYetValidException - 指定された date に証明書がまだ有効になっていない場合
関連項目:
checkValidity()

getVersion

public abstract int getVersion()
証明書から version (バージョン番号) 値を取得します。ASN.1 定義は次のとおりです。
 version  [0] EXPLICIT Version DEFAULT v1

Version ::= INTEGER { v1(0), v2(1), v3(2) }

戻り値:
バージョン番号 (1、2、または 3)

getSerialNumber

public abstract BigInteger getSerialNumber()
証明書から serialNumber 値を取得します。シリアル番号は、証明書発行局によって各証明書に割り当てられる整数値です。シリアル番号は、指定された CA によって発行された各証明書に対して一意でなければなりません。つまり、発行者名とシリアル番号によって一意の証明書が識別されます。ASN.1 定義は次のとおりです。
 serialNumber     CertificateSerialNumber

CertificateSerialNumber ::= INTEGER

戻り値:
シリアル番号

getIssuerDN

public abstract Principal getIssuerDN()
証明書から issuer (発行者識別名) 値を取得します。発行者名は証明書の署名と発行を行なったエンティティを識別します。

発行者名フィールドには、X.500 識別名 (DN) が格納されます。ASN.1 定義は次のとおりです。

 issuer    Name

Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeValueAssertion AttributeValueAssertion ::= SEQUENCE { AttributeType, AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY

Name には、国名などの属性とそれに対応する、US などの値からなる階層的な名前を記述します。AttributeValue コンポーネントのタイプは、AttributeType によって決まります。一般的には、directoryString です。directoryString は、通常 PrintableStringTeletexStringUniversalString のどれかです。
戻り値:
名前が発行者識別名である Principal

getSubjectDN

public abstract Principal getSubjectDN()
証明書から subject (被認証者識別名) 値を取得します。ASN.1 定義は次のとおりです。
 subject    Name
 

Name およびその他の関連する定義については、getIssuerDN を参照してください。

戻り値:
名前が被認証者識別名である Principal

getNotBefore

public abstract Date getNotBefore()
証明書の有効期間から notBefore の日付を取得します。該当する ASN.1 定義は次のとおりです。
 validity             Validity

Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }

CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

戻り値:
有効期間の開始日
関連項目:
checkValidity()

getNotAfter

public abstract Date getNotAfter()
証明書の有効期間から notAfter の日付を取得します。該当する ASN.1 定義については、getNotBefore を参照してください。
戻り値:
有効期間の終了日
関連項目:
checkValidity()

getTBSCertificate

public abstract byte[] getTBSCertificate()
                                  throws CertificateEncodingException
この証明書から DER で符号化された認証情報 tbsCertificate を取得します。これは署名を個別に検証するために使用されます。
戻り値:
DER で符号化された認証情報
例外:
CertificateEncodingException - 符号化エラーが発生した場合

getSignature

public abstract byte[] getSignature()
証明書から signature 値 (生のシグニチャービット) を取得します。ASN.1 定義は次のとおりです。
 signature     BIT STRING  
 
戻り値:
署名

getSigAlgName

public abstract String getSigAlgName()
証明書の署名アルゴリズム名を取得します。たとえば、文字列「SHA-1/DSA」などです。ASN.1 定義は次のとおりです。
 signatureAlgorithm   AlgorithmIdentifier

AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value

アルゴリズム名は algorithm OID 文字列から判定されます。

戻り値:
署名アルゴリズム名

getSigAlgOID

public abstract String getSigAlgOID()
証明書から署名アルゴリズムの OID 文字列を取得します。OID はピリオドで区切られた正の整数のセットで表されます。たとえば、文字列「1.2.840.10040.4.3」では、DSA 署名アルゴリズムを持つ SHA-1 が識別されます (RFC 2459 を参照)。

関連する ASN.1 定義については、getSigAlgName を参照してください。

戻り値:
署名アルゴリズムの OID 文字列

getSigAlgParams

public abstract byte[] getSigAlgParams()
この証明書の署名アルゴリズムから、DER で符号化された署名アルゴリズムパラメータを取得します。ほとんどの場合、署名アルゴリズムパラメータは null で、通常は証明書の公開鍵とともに提供されます。個々のパラメータ値へのアクセスが必要な場合は、AlgorithmParameters を使用し、getSigAlgName によって返される名前を使ってインスタンスを生成します。

関連する ASN.1 定義については、getSigAlgName を参照してください。

戻り値:
DER で符号化された署名アルゴリズムパラメータ。パラメータが存在しない場合は null

getIssuerUniqueID

public abstract boolean[] getIssuerUniqueID()
証明書から issuerUniqueID 値を取得します。発行者固有の識別子は、発行者名が繰り返し再使用される可能性に対処するために、証明書に定義されています。RFC 2459 では、名前を再使用しないこと、および準拠する証明書が一意の識別子を使用しないことを推奨しています。そのプロファイルに準拠するアプリケーションは、一意の識別子を解析および比較できることが必要です。

ASN.1 定義は次のとおりです。

 issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL

UniqueIdentifier ::= BIT STRING

戻り値:
発行者の一意の識別子。証明書に定義されていない場合は null

getSubjectUniqueID

public abstract boolean[] getSubjectUniqueID()
証明書から subjectUniqueID 値を取得します。

ASN.1 定義は次のとおりです。

 subjectUniqueID  [2]  IMPLICIT UniqueIdentifier OPTIONAL

UniqueIdentifier ::= BIT STRING

戻り値:
被認証者の一意の識別子。証明書に定義されていない場合は null

getKeyUsage

public abstract boolean[] getKeyUsage()
KeyUsage 拡張機能 (OID = 2.5.29.15) のビットを表す boolean 配列を取得します。鍵使用目的の拡張機能は、証明書に設定されている鍵の使用目的 (たとえば、暗号用、署名用、証明書署名用) を定義します。ASN.1 定義は次のとおりです。
 KeyUsage ::= BIT STRING {
     digitalSignature        (0),
     nonRepudiation          (1),
     keyEncipherment         (2),
     dataEncipherment        (3),
     keyAgreement            (4),
     keyCertSign             (5),
     cRLSign                 (6),
     encipherOnly            (7),
     decipherOnly            (8) }
 
RFC 2459 では、これを使用する場合はクリティカルな拡張としてマーキングすることを推奨しています。
戻り値:
ブール値配列として表されたこの証明書の KeyUsage 拡張機能。KeyUsage 値の配列順は上記の ASN.1 定義と同じです。配列には上で定義した各 KeyUsage の値が含まれます。証明書の中に符号化された KeyUsage リストが上記のリストより長い場合でも切り捨てられることはありません。この証明書に KeyUsage 拡張機能がない場合は null を返します。

getBasicConstraints

public abstract int getBasicConstraints()
クリティカルな BasicConstraints 拡張機能 (OID = 2.5.29.19) から証明書の制約のパスの長さを取得します。

基本制約拡張機能は、証明書の被認証者が証明書発行局 (CA) であるかどうか、およびその CA の証明書パスの深さを識別します。pathLenConstraint フィールド (下記を参照) は、cA が TRUE に設定されている場合にだけ有効です。この場合、証明書パスでこの証明書のあとに続く CA 証明書の最大数を示します。値 0 は、エンドエンティティの証明書だけであることを示します。

RFC 2459 では、cA が TRUE (この証明書は証明書発行局のものである) の場合は、この拡張機能は常にクリティカルとしてマーキングされます。

ASN.1 定義は次のとおりです。

 BasicConstraints ::= SEQUENCE {
     cA                  BOOLEAN DEFAULT FALSE,
     pathLenConstraint   INTEGER (0..MAX) OPTIONAL }
 
戻り値:
証明書に BasicConstraints 拡張機能があり被認証者が CA の場合は pathLenConstraint の値、被認証者が CA で pathLenConstraint が表示されない場合は、認証パスの長さに制限がないことが示すため Integer.MAX_VALUE が返される

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.