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()
Set<String> getCriticalExtensionOIDs()
InputStream inStrm = null;
X509Certificate cert = null;
try {
inStrm = new FileInputStream("DER-encoded-Cert");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate)cf.generateCertificate(inStrm);
} finally {
if (inStrm != null) {
inStrm.close();
}
}
Set 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()
InputStream inStrm = null;
CertificateFactory cf = null;
X509CRL crl = null;
try {
inStrm = new FileInputStream("DER-encoded-CRL");
cf = CertificateFactory.getInstance("X.509");
crl = (X509CRL)cf.generateCRL(inStrm);
} finally {
if (inStrm != null) {
inStrm.close();
}
}
byte[] certData = <DER-encoded certificate data>
ByteArrayInputStream bais = new ByteArrayInputStream(certData);
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
bais.close();
X509CRLEntry badCert =
crl.getRevokedCertificate(cert.getSerialNumber());
if (badCert != null) {
Set 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, 2013, Oracle and/or its affiliates. All rights reserved.