public interface X509Extension
X.509 v3 Certificates
およびv2 CRLs
(証明書の取消しリスト)で定義される拡張機能は、追加属性をユーザーまたは公開鍵に関連付けたり、認証の階層を管理したり、CRLの配布を管理したりする方法を提供します。また、X.509拡張機能形式では、コミュニティに固有の情報を伝えるために、コミュニティ専用の拡張機能を定義することもできます。
証明書またはCRLの各拡張機能は、クリティカルとしても非クリティカルとしても指定できます。証明書またはCRLを使うシステム(証明書またはCRLの妥当性を検証するアプリケーション)で、認識できないクリティカルな拡張機能が検出されたときにはその証明書またはCRLを拒否する必要があります。クリティカルではない拡張機能は、認識できない場合は無視してもかまいません。
ASN.1定義は次のとおりです。
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnId OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING -- contains a DER encoding of a value -- of the type registered for use with -- the extnId object identifier value }すべての拡張機能が認識されているわけではないため、
getExtensionValue
メソッドは、拡張値(extnValue
)のDERで符号化されたOCTET STRINGを返します。これは拡張機能を認識できるClassによって処理できます。修飾子と型 | メソッドと説明 |
---|---|
Set<String> |
getCriticalExtensionOIDs()
このインタフェースを実装するオブジェクトによって管理されている証明書またはCRLで、CRITICALとしてマーキングされている拡張のOID文字列のSetを取得します。
|
byte[] |
getExtensionValue(String oid)
渡された
oid Stringで識別される拡張値(extnValue)の、DERで符号化されたOCTET文字列を取得します。 |
Set<String> |
getNonCriticalExtensionOIDs()
このインタフェースを実装するオブジェクトによって管理されている証明書またはCRLで、NON-CRITICALとしてマーキングされている拡張機能のOID文字列のSetを取得します。
|
boolean |
hasUnsupportedCriticalExtension()
サポートされていないクリティカルな拡張機能があるかをチェックします。
|
boolean hasUnsupportedCriticalExtension()
true
、そうでない場合はfalse
。Set<String> getCriticalExtensionOIDs()
X509Certificate cert = null;
try (InputStream inStrm = new FileInputStream("DER-encoded-Cert")) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate)cf.generateCertificate(inStrm);
}
Set<String> critSet = cert.getCriticalExtensionOIDs();
if (critSet != null && !critSet.isEmpty()) {
System.out.println("Set of critical extensions:");
for (String oid : critSet) {
System.out.println(oid);
}
}
Set<String> getNonCriticalExtensionOIDs()
CertificateFactory cf = null;
X509CRL crl = null;
try (InputStream inStrm = new FileInputStream("DER-encoded-CRL")) {
cf = CertificateFactory.getInstance("X.509");
crl = (X509CRL)cf.generateCRL(inStrm);
}
byte[] certData = <DER-encoded certificate data>
ByteArrayInputStream bais = new ByteArrayInputStream(certData);
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
X509CRLEntry badCert =
crl.getRevokedCertificate(cert.getSerialNumber());
if (badCert != null) {
Set<String> nonCritSet = badCert.getNonCriticalExtensionOIDs();
if (nonCritSet != null)
for (String oid : nonCritSet) {
System.out.println(oid);
}
}
byte[] getExtensionValue(String oid)
oid
Stringで識別される拡張値(extnValue)の、DERで符号化されたOCTET文字列を取得します。oid
文字列はピリオドで区切られた正の整数のセットによって表されます。
例:
OID (オブジェクト識別子) | 拡張機能名 |
---|---|
2.5.29.14 | SubjectKeyIdentifier |
2.5.29.15 | KeyUsage |
2.5.29.16 | PrivateKeyUsage |
2.5.29.17 | SubjectAlternativeName |
2.5.29.18 | IssuerAlternativeName |
2.5.29.19 | BasicConstraints |
2.5.29.30 | NameConstraints |
2.5.29.33 | PolicyMappings |
2.5.29.35 | AuthorityKeyIdentifier |
2.5.29.36 | PolicyConstraints |
oid
- 拡張機能のオブジェクト識別子の値。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.