public abstract class X509Certificate extends Certificate implements X509Extension
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によって署名されています。
詳細は、RFC 3280「Internet X.509 Public Key Infrastructure Certificate and CRL Profile」を参照してください。
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証明書のインスタンスを生成する方法を示しています。
try (InputStream inStream = new FileInputStream("fileName-of-cert")) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
}
Certificate.CertificateRep| 修飾子 | コンストラクタ | 説明 |
|---|---|---|
protected |
X509Certificate() |
X.509証明書のコンストラクタです。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
abstract void |
checkValidity() |
証明書が現在有効であるかどうかを判定します。
|
abstract void |
checkValidity(Date date) |
指定された日付が、証明書の有効期間内であるかどうかを判定します。
|
abstract int |
getBasicConstraints() |
クリティカルな
BasicConstraints拡張機能(OID = 2.5.29.19)から証明書の制約のパスの長さを取得します。 |
List<String> |
getExtendedKeyUsage() |
拡張キー使用法の拡張機能(OID = 2.5.29.37)にある
ExtKeyUsageSyntaxフィールドのオブジェクト識別子を表す変更不可能なStringのリストを取得します。 |
Collection<List<?>> |
getIssuerAlternativeNames() |
IssuerAltName拡張機能(OID = 2.5.29.18)から、発行者の代替名の不変なコレクションを取得します。 |
abstract Principal |
getIssuerDN() |
非推奨、 getIssuerX500Principal()で置き換えられました。
|
abstract boolean[] |
getIssuerUniqueID() |
証明書から
issuerUniqueID値を取得します。 |
X500Principal |
getIssuerX500Principal() |
証明書から発行者(発行者識別名)の値を
X500Principalとして返します。 |
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値(生のシグネチャ・ビット)を取得します。 |
Collection<List<?>> |
getSubjectAlternativeNames() |
SubjectAltName拡張機能(OID = 2.5.29.17)から、サブジェクトの代替名の不変なコレクションを取得します。 |
abstract Principal |
getSubjectDN() |
非推奨、 getSubjectX500Principal()で置き換えられました。
|
abstract boolean[] |
getSubjectUniqueID() |
証明書から
subjectUniqueID値を取得します。 |
X500Principal |
getSubjectX500Principal() |
証明書からサブジェクト(サブジェクト識別名)の値を
X500Principalとして返します。 |
abstract byte[] |
getTBSCertificate() |
この証明書からDERで符号化された証明書情報
tbsCertificateを取得します。 |
abstract int |
getVersion() |
証明書から
version (バージョン番号)値を取得します。 |
void |
verify(PublicKey key, Provider sigProvider) |
指定された公開キーに対応する非公開キーを使って、この証明書が署名されたことを検証します。
|
equals, getEncoded, getPublicKey, getType, hashCode, toString, verify, verify, writeReplacegetCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtensionpublic 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を実装固有のPrincipalオブジェクトとして返します。移植性のあるコードがこのようなオブジェクトに依存すべきではありません。
証明書から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 X500Principal getIssuerX500Principal()
X500Principalとして返します。
サブクラスでこのメソッドをオーバーライドすることをお薦めします。
X500Principalpublic abstract Principal getSubjectDN()
subjectを実装固有のPrincipalオブジェクトとして返します。移植性のあるコードがこのようなオブジェクトに依存すべきではありません。
証明書からsubject (サブジェクト識別名)値を取得します。 subject値が空の場合、返されるPrincipalオブジェクトのgetName()メソッドは空の文字列("")を返します。
ASN.1定義は次のとおりです。
subject Name
Nameおよびその他の関連する定義については、getIssuerDNを参照してください。
public X500Principal getSubjectX500Principal()
X500Principalとして返します。 サブジェクト値が空の場合、返されるX500PrincipalオブジェクトのgetName()メソッドは空の文字列("")を返します。
サブクラスでこのメソッドをオーバーライドすることをお薦めします。
X500Principalpublic 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 byte[] getTBSCertificate()
throws CertificateEncodingException
tbsCertificateを取得します。 この情報は署名を個別に検証するために使用されます。 CertificateEncodingException - 符号化エラーが発生した場合。public abstract byte[] getSignature()
signature値(生のシグネチャ・ビット)を取得します。 ASN.1定義は次のとおりです。
signature BIT STRING
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()
AlgorithmParametersを使用し、getSigAlgNameによって返される名前を使ってインスタンスを生成します。
該当するASN.1定義については、getSigAlgNameを参照してください。
public abstract boolean[] getIssuerUniqueID()
issuerUniqueID値を取得します。 発行者固有の識別子は、発行者名が繰返し再使用される可能性に対処するために、証明書に定義されています。 RFC 3280では、名前を再使用しないこと、および準拠する証明書が一意の識別子を使用しないことを推奨しています。 そのプロファイルに準拠するアプリケーションは、一意の識別子を解析および比較できることが必要です。
ASN.1定義は次のとおりです。
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL UniqueIdentifier ::= BIT STRING
public abstract boolean[] getSubjectUniqueID()
subjectUniqueID値を取得します。
ASN.1定義は次のとおりです。
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL UniqueIdentifier ::= 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) }
RFC 3280では、これを使用する場合はクリティカルな拡張としてマーキングすることを推奨しています。public List<String> getExtendedKeyUsage() throws CertificateParsingException
ExtKeyUsageSyntaxフィールドのオブジェクト識別子を表す変更不可能なStringのリストを取得します。 これは、キー使用法の拡張機能フィールドに示されている基本的な目的に加えて、あるいはその基本的な目的の代わりに、公開キーが使われる目的(複数可)を表します。 ASN.1定義は次のとおりです。
ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIERキーの目的は、ニーズに合わせて組織で定義します。 キーの目的を特定するオブジェクト識別子は、IANAまたはITU-TのRec. X.660、あるいはISO/IEC/ITU 9834-1に従って割り当てられなければいけません。
このメソッドは、Java 2 Platform Standard Editionのバージョン1.4で追加されました。 既存のサービス・プロバイダとの下位互換性を維持するため、このメソッドはabstractではなく、デフォルトの実装を提供します。 サブクラスは正しい実装でこのメソッドをオーバーライドしなければいけません。
CertificateParsingException - 拡張機能が復号化できなかった場合public abstract int getBasicConstraints()
BasicConstraints拡張機能(OID = 2.5.29.19)から証明書の制約のパスの長さを取得します。
基本制約拡張機能は、証明書のサブジェクトが証明書発行局(CA)であるかどうか、およびそのCAの証明書パスの深さを識別します。 pathLenConstraintフィールド(下記を参照)は、cAがTRUEに設定されている場合にだけ有効です。 この場合、証明書パスでこの証明書のあとに続くCA証明書の最大数を示します。 値0は、エンド・エンティティの証明書だけであることを示します。
ASN.1定義は次のとおりです。
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
pathLenConstraintの値で、そうでない場合は -1。 サブジェクトがCAでpathLenConstraintが表示されない場合は、証明書パスの長さに制限がないことが示すためInteger.MAX_VALUEが返される public Collection<List<?>> getSubjectAlternativeNames() throws CertificateParsingException
SubjectAltName拡張機能(OID = 2.5.29.17)から、サブジェクトの代替名の不変なコレクションを取得します。
SubjectAltName拡張機能のASN.1定義は次のとおりです。
SubjectAltName ::= GeneralNames
GeneralNames :: = SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
この証明書にSubjectAltName拡張機能が含まれない場合は、nullが返されます。 そうでない場合は、拡張機能に含まれる各GeneralNameを表すエントリを含むCollectionが返されます。 各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。
RFC 822、DNS、URIの各名前はStringとして返されます。このとき、RFC 3280に含まれる制限に従って、それぞれのタイプで明確に定義された文字列フォーマットが用いられます。 IPv4アドレス名はドットで4つに区切られた表記法で返されます。 IPv6アドレス名は、「a1:a2:...:a8」という形式で返されます。a1 - a8は、16進数表記で、アドレスを16ビットずつで8つに分割しています。 OID名は、ピリオドで区切られた負にならない一連の整数で表されるStringとして返されます。 ディレクトリ名(識別名)はRFC 2253文字列フォーマットで返されます。 otherName、X.400名、EDI相手名、そのほかのタイプの名前には、標準の文字列形式はありません。 名前のASN.1 DER符号化形式を含むバイト配列として返されます。
返されるCollectionには、同じタイプの名前が複数含まれていることがあります。 また、返されるCollectionは不変であり、バイト配列を含むエントリはいずれも以後の変更から保護するために複製されています。
このメソッドは、Java 2 Platform Standard Editionのバージョン1.4で追加されました。 既存のサービス・プロバイダとの下位互換性を維持するため、このメソッドはabstractではなく、デフォルトの実装を提供します。 サブクラスは正しい実装でこのメソッドをオーバーライドしなければいけません。
Collection。またはnullCertificateParsingException - 拡張機能が復号化できなかった場合public Collection<List<?>> getIssuerAlternativeNames() throws CertificateParsingException
IssuerAltName拡張機能(OID = 2.5.29.18)から、発行者の代替名の不変なコレクションを取得します。
IssuerAltName拡張機能のASN.1定義は次のとおりです。
IssuerAltName ::= GeneralNames
GeneralNamesのASN.1定義は、getSubjectAlternativeNamesにあります。
この証明書にIssuerAltName拡張機能が含まれない場合は、nullが返されます。 そうでない場合は、拡張機能に含まれる各GeneralNameを表すエントリを含むCollectionが返されます。 各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。 それぞれの名前型で使われる形式の詳細については、getSubjectAlternativeNamesメソッドを参照してください。
返されるCollectionには、同じタイプの名前が複数含まれていることがあります。 また、返されるCollectionは不変であり、バイト配列を含むエントリはいずれも以後の変更から保護するために複製されています。
このメソッドは、Java 2 Platform Standard Editionのバージョン1.4で追加されました。 既存のサービス・プロバイダとの下位互換性を維持するため、このメソッドはabstractではなく、デフォルトの実装を提供します。 サブクラスは正しい実装でこのメソッドをオーバーライドしなければいけません。
Collection。またはnullCertificateParsingException - 拡張機能が復号化できなかった場合public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
abstractではなく、デフォルトの実装を提供します。 verify、クラスCertificatekey - 検証の実行に使うPublicKey。sigProvider - 署名プロバイダ。NoSuchAlgorithmException - サポートされていない署名アルゴリズムの場合。InvalidKeyException - 無効なキーの場合。SignatureException - 署名エラーの場合。CertificateException - 符号化エラーの場合。UnsupportedOperationException - メソッドがサポートされていない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。