モジュール java.base
パッケージ java.security.cert

インタフェースX509Extension

  • 既知のすべての実装クラス:
    X509Certificate, X509CRL, X509CRLEntry

    public interface X509Extension
    X.509拡張機能のためのインタフェースです。

    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によって処理できます。
    導入されたバージョン:
    1.2
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 抽象メソッド 
      修飾子と型 メソッド 説明
      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()
      サポートされていないクリティカルな拡張機能があるかをチェックします。
    • メソッドの詳細

      • hasUnsupportedCriticalExtension

        boolean hasUnsupportedCriticalExtension()
        サポートされていないクリティカルな拡張機能があるかをチェックします。
        戻り値:
        サポートされていないクリティカルな拡張機能が見つかった場合はtrue、そうでない場合はfalse
      • getCriticalExtensionOIDs

        Set<String> getCriticalExtensionOIDs()
        このインタフェースを実装するオブジェクトによって管理されている証明書またはCRLで、CRITICALとしてマーキングされている拡張のOID文字列のSetを取得します。 次のコーディング例は、X509Certificateからクリティカルな拡張機能のSetを取得し、OIDを出力する例です。
        
         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);
             }
         }
         
        戻り値:
        クリティカルとしてマーキングされている拡張機能の拡張OID文字列のSet。クリティカルとしてマーキングされている拡張機能がない場合は空のSet。 拡張機能が1つもない場合はnull
      • getNonCriticalExtensionOIDs

        Set<String> getNonCriticalExtensionOIDs()
        このインタフェースを実装するオブジェクトによって管理されている証明書またはCRLで、NON-CRITICALとしてマーキングされている拡張機能のOID文字列のSetを取得します。 次のコーディング例は、X509CRL取消し証明書エントリから非クリティカルな拡張機能のSetを取得し、OIDを出力する例です。
        
         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);
                 }
         }
         
        戻り値:
        非クリティカルとしてマーキングされている拡張機能の拡張OID文字列のSet。非クリティカルとしてマーキングされている拡張機能がない場合は空のSet。 拡張機能が1つもない場合はnull
      • getExtensionValue

        byte[] getExtensionValue​(String oid)
        渡されたoid Stringで識別される拡張値(extnValue)の、DERで符号化されたOCTET文字列を取得します。 oid文字列はピリオドで区切られた正の整数のセットによって表されます。

        例:

        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 - 拡張機能のオブジェクト識別子の値。
        戻り値:
        拡張値のDERで符号化されたオクテット文字列。この文字列がない場合はnull