|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.security.cert.Certificate | +--javax.security.cert.X509Certificate
X.509 v1 証明書の abstract クラスです。X.509 証明書のバージョン 1 の属性にアクセスする標準的な方法を提供します。X.509 の v2 や v3 に固有の属性は、このインタフェースを通じては利用できません。将来の API 展開では、完全な X.509 v3 属性へのフルアクセスを提供します。
基本的な X.509 形式は、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 によって署名されています。
tbsCertificate
の ASN.1 定義は次のとおりです。
TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, }
X.509 証明書をインスタンス化するコーディング例を示します。
InputStream inStream = new FileInputStream("fileName-of-cert"); X509Certificate cert = X509Certificate.getInstance(inStream); inStream.close();または
byte[] certData = <certificate read from a file, say> X509Certificate cert = X509Certificate.getInstance(certData);
どちらの場合も、X.509 証明書をインスタンス化するコードは、実際の実装を特定したりデフォルト実装で初期化したりするのに Java セキュリティプロパティファイルを使用します。
Java セキュリティプロパティファイルは、<JAVA_HOME>/lib/security/java.security というファイルです。<JAVA_HOME> は、JDK がインストールされているディレクトリを指します。セキュリティプロパティファイルでは、X.509 v1 のデフォルト実装が次のように定義されます。
cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl
ほかの実装をインスタンス化するときには、この cert.provider.x509v1
プロパティの値を変更する必要があります。このプロパティファイルが設定されていない場合は、デフォルト実装が使用されます。現在のところ、セキュリティプロパティにアクセスするうえでセキュリティ制限があるおそれがあるため、この値はクラスが初期化されるときに調査、キャッシュされ、セキュリティプロパティにアクセスできない場合はデフォルト実装が代わりに使われます。
注: パッケージ javax.security.cert
のクラスは、旧バージョンの Java Secure Sockets Extension (JSSE) との互換性のために存在します。新しく作成するアプリケーションでは、java.security.cert
にある標準 J2SE 証明書クラスをこのクラスの代わりに使用してください。
Certificate
,
X509Extension
コンストラクタの概要 | |
X509Certificate()
|
メソッドの概要 | |
abstract void |
checkValidity()
証明書が現在有効であるかどうかを判定します。 |
abstract void |
checkValidity(Date date)
指定された日付が、証明書の有効期間内であるかどうかを判定します。 |
static X509Certificate |
getInstance(byte[] certData)
X509Certificate オブジェクトをインスタンス化し、指定したバイト配列で初期化します。 |
static X509Certificate |
getInstance(InputStream inStream)
X509Certificate オブジェクトをインスタンス化し、入力ストリーム inStream から読み取られたデータで初期化します。 |
abstract Principal |
getIssuerDN()
証明書から issuer (発行者識別名) 値を取得します。 |
abstract Date |
getNotAfter()
証明書の有効期間から notAfter の日付を取得します。 |
abstract Date |
getNotBefore()
証明書の有効期間から notBefore の日付を取得します。 |
abstract BigInteger |
getSerialNumber()
証明書から serialNumber 値を取得します。 |
abstract String |
getSigAlgName()
証明書の署名アルゴリズム名を取得します。 |
abstract String |
getSigAlgOID()
証明書から署名アルゴリズムの OID 文字列を取得します。 |
abstract byte[] |
getSigAlgParams()
この証明書の署名アルゴリズムから、DER で符号化された署名アルゴリズムパラメータを取得します。 |
abstract Principal |
getSubjectDN()
証明書から subject (被認証者識別名) 値を取得します。 |
abstract int |
getVersion()
証明書から version (バージョン番号) 値を取得します。 |
クラス javax.security.cert.Certificate から継承したメソッド |
equals, getEncoded, getPublicKey, hashCode, toString, verify, verify |
クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
public X509Certificate()
メソッドの詳細 |
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
inStream
から読み取られたデータで初期化します。この実装 (X509Certificate は abstract クラス) は、セキュリティプロパティファイルで cert.provider.x509v1
プロパティの値として指定したクラスによって提供されます。
注: 1 つの DER 符号化証明書だけが入力ストリームであることが前提となります。また、すべての X509Certificate サブクラスでは、次のようなフォームのコンストラクタを提供しなければなりません。
public <subClass>(InputStream inStream) ...
inStream
- 証明書を初期化するために読み取られるデータを保持する入力ストリーム
CertificateException
- クラスの初期化時、または証明書の解析時にエラーが発生した場合public static final X509Certificate getInstance(byte[] certData) throws CertificateException
cert.provider.x509v1
プロパティの値として指定したクラスによって提供されます。
注: すべての X509Certificate サブクラスでは、次のようなフォームのコンストラクタを提供する必要があります。
public <subClass>(InputStream inStream) ...
certData
- DER 符号化された証明書を含むバイト配列
certData
からのデータで初期化された X509Certificate オブジェクト
CertificateException
- クラスの初期化時、または証明書の解析時にエラーが発生した場合public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
有効期間は、証明書が有効である最初の日時と最後の日時の 2 つの日時値からなります。これは ASN.1 で次のように定義されます。
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
CertificateExpiredException
- 証明書の有効期限が切れている場合
CertificateNotYetValidException
- 証明書がまだ有効になっていない場合public abstract void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException
date
- 指定された日時にこの証明書が有効であるかどうかを調べる Date
CertificateExpiredException
- 指定された date
に証明書が期限切れになっている場合
CertificateNotYetValidException
- 指定された date
に証明書がまだ有効になっていない場合checkValidity()
public abstract int getVersion()
version
(バージョン番号) 値を取得します。ASN.1 定義は次のとおりです。
version [0] EXPLICIT Version DEFAULT v1Version ::= INTEGER { v1(0), v2(1), v3(2) }
public abstract BigInteger getSerialNumber()
serialNumber
値を取得します。シリアル番号は、証明書発行局によって各証明書に割り当てられる整数値です。シリアル番号は、指定された CA によって発行された各証明書に対して一意でなければなりません。つまり、発行者名とシリアル番号によって一意の証明書が識別されます。ASN.1 定義は次のとおりです。
serialNumber CertificateSerialNumberCertificateSerialNumber ::= INTEGER
public abstract Principal getIssuerDN()
issuer
(発行者識別名) 値を取得します。発行者名は証明書の署名と発行を行ったエンティティを識別します。
発行者名フィールドには、X.500 識別名 (DN) が格納されます。ASN.1 定義は次のとおりです。
issuer NameName ::= 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
は、通常 PrintableString
、TeletexString
、UniversalString
のどれかです。
public abstract Principal getSubjectDN()
subject
(被認証者識別名) 値を取得します。ASN.1 定義は次のとおりです。
subject Name
Name
およびその他の関連する定義については、 getIssuerDN を参照してください。
getIssuerDN()
public abstract Date getNotBefore()
notBefore
の日付を取得します。該当する ASN.1 定義は次のとおりです。
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
checkValidity()
public abstract Date getNotAfter()
notAfter
の日付を取得します。該当する ASN.1 定義については、getNotBefore を参照してください。
checkValidity()
public abstract String getSigAlgName()
signatureAlgorithm AlgorithmIdentifierAlgorithmIdentifier ::= 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 文字列から判定されます。
public abstract String getSigAlgOID()
関連する ASN.1 定義については、getSigAlgName を参照してください。
public abstract byte[] getSigAlgParams()
関連する ASN.1 定義については、getSigAlgName を参照してください。
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.