|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.security.cert.Certificate
|
+--java.security.cert.X509Certificate
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 によって署名されています。
IETF PKIX WG draft の「Part I: X.509 Certificate and CRL Profile」 <draft-ietf-pkix-ipki-part1-07.txt> に説明とプロファイルが提供されています。
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| コンストラクタの概要 | |
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 |
| クラス java.lang.Object から継承したメソッド |
clone,
finalize,
getClass,
notify,
notifyAll,
wait,
wait,
wait |
| コンストラクタの詳細 |
protected X509Certificate()
| メソッドの詳細 |
public abstract void checkValidity()
throws CertificateExpiredException,
CertificateNotYetValidException
有効期間は、証明書が有効である最初の日時と最後の日時の 2 つの日時値からなります。これは ASN.1 で次のように定義されています。
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
public abstract void checkValidity(Date date)
throws CertificateExpiredException,
CertificateNotYetValidException
date - 指定された日時にこの証明書が有効であるかどうかを調べる Datedate に証明書が期限切れになっている場合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()#getNotBefore を参照してください。checkValidity()
public abstract byte[] getTBSCertificate()
throws CertificateEncodingException
tbsCertificate を取得します。これは署名を個別に検証するために使用されます。public abstract byte[] getSignature()
signature 値 (生のシグニチャービット) を取得します。ASN.1 定義は次のとおりです。
signature BIT STRING
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()#getSigAlgName を参照してください。
public abstract byte[] getSigAlgParams()
AlgorithmParameters.AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, java.lang.String) を使用し、getSigAlgName()#getSigAlgName によって返される名前を使ってインスタンスを生成します。
関連する ASN.1 定義については、getSigAlgName()#getSigAlgName を参照してください。
public abstract boolean[] getIssuerUniqueID()
issuerUniqueID 値を取得します。発行者固有の識別子は、発行者名が繰り返し再使用される可能性に対処するために、証明書に定義されています。PKIX Part I では、名前を再使用しないこと、および準拠する証明書が一意の識別子を使用しないことを推奨しています。そのプロファイルに準拠するアプリケーションは、一意の識別子を解析および比較できることが必要です。
ASN.1 定義は次のとおりです。
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
public abstract boolean[] getSubjectUniqueID()
subjectUniqueID 値を取得します。
ASN.1 定義は次のとおりです。
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
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) }
PKIX part I draft では、これを使用する場合はクリティカルな拡張としてマーキングすることを推奨しています。public abstract int getBasicConstraints()
BasicConstraints 拡張機能 (OID = 2.5.29.19) から証明書の制約のパスの長さを取得します。
基本制約拡張機能は、証明書の被認証者が証明書発行局 (CA) であるかどうか、およびその CA の証明書パスの深さを識別します。pathLenConstraint フィールド (下記を参照) は、cA が TRUE に設定されている場合にだけ有効です。この場合、証明書パスでこの証明書のあとに続く CA 証明書の最大数を示します。値 0 は、エンドエンティティの証明書だけであることを示します。
PKIX プロファイルでは、cA が TRUE (この証明書は証明書発行局のものである) の場合は、この拡張機能は常にクリティカルとしてマーキングされます。
ASN.1 定義は次のとおりです。
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
cA 値が TRUE の場合は、制約の長さ。そうでない場合は -1
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||