public abstract class X509Certificate extends Certificate
基本的な 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> は 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 (バージョン番号) 値を取得します。 |
equals, getEncoded, getPublicKey, hashCode, toString, verify, verify
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
を参照してください。
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.