|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.security.cert.Certificate javax.security.cert.X509Certificate
public abstract class 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 = <ファイルから読み込まれる証明書> X509Certificate cert = X509Certificate.getInstance(certData);
どちらの場合も、X.509 証明書をインスタンス化するコードは、実際の実装を特定したりデフォルト実装で初期化したりするのに Java セキュリティープロパティーファイルを使用します。
Java セキュリティープロパティーファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルに格納されています。<JAVA_HOME> は java.home システムプロパティーの値を参照しており、JRE のインストールディレクトリを示します。セキュリティープロパティーファイルでは、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
にある標準 Java SE 証明書クラスを使用するようにしてください。
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
のどれかです。
- 戻り値:
- 名前が発行者識別名である Principal
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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。