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証明書をインスタンス化するコードは、実際の実装を特定したりデフォルト実装で初期化したりするのに、cert.provider.x509v1
セキュリティ・プロパティの値を使用します。
cert.provider.x509v1
プロパティは次のように、X.509用のデフォルト実装に設定されています。
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は抽象クラス)は、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 Validity Validity ::= 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 v1 Version ::= INTEGER { v1(0), v2(1), v3(2) }
public abstract BigInteger getSerialNumber()
serialNumber
値を取得します。シリアル番号は、証明書発行局によって各証明書に割り当てられる整数値です。シリアル番号は、指定されたCAによって発行された各証明書に対して一意である必要があります。つまり、発行者名とシリアル番号によって一意の証明書が識別されます。ASN.1定義は次のとおりです。
serialNumber CertificateSerialNumber CertificateSerialNumber ::= INTEGER
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
は、通常PrintableString
、TeletexString
、UniversalString
のいずれかです。public abstract Principal getSubjectDN()
subject
(サブジェクト識別名)値を取得します。ASN.1定義は次のとおりです。
subject Name
Name
およびその他の関連する定義については、getIssuerDN
を参照してください。
getIssuerDN()
public abstract Date getNotBefore()
notBefore
の日付を取得します。該当するASN.1定義は次のとおりです。
validity Validity Validity ::= 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 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文字列から判定されます。
public abstract String getSigAlgOID()
該当するASN.1定義については、getSigAlgName
を参照してください。
public abstract byte[] getSigAlgParams()
該当するASN.1定義については、getSigAlgName
を参照してください。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.