Module java.base

Class TrustAnchor

java.lang.Object
java.security.cert.TrustAnchor

public class TrustAnchor extends Object
一个信任锚点或最受信任的认证机构(CA)。

此类表示“最受信任的CA”,用作验证X.509证书路径的信任锚点。最受信任的CA包括CA的公钥、CA的名称以及可能使用此密钥验证的路径集合上的任何约束。这些参数可以以受信任的X509Certificate的形式或作为单独的参数来指定。

并发访问

所有TrustAnchor对象必须是不可变的且线程安全的。也就是说,多个线程可以同时在单个TrustAnchor对象(或多个对象)上调用此类中定义的方法,而不会产生任何不良影响。要求TrustAnchor对象是不可变的和线程安全的,允许它们在各种代码片段之间传递,而无需担心协调访问。此规定适用于此类的所有公共字段和方法,以及任何子类添加或覆盖的字段和方法。

自:
1.4
参见:
  • Constructor Details

    • TrustAnchor

      public TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
      创建一个带有指定X509Certificate和可选名称约束的TrustAnchor实例,这些名称约束旨在在验证X.509证书路径时用作附加约束。

      名称约束被指定为一个字节数组。该字节数组应包含名称约束的DER编码形式,就像它们在RFC 5280和X.509中定义的NameConstraints结构中出现的那样。该结构的ASN.1定义如下。

      
        NameConstraints ::= SEQUENCE {
             permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
             excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
      
        GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
      
        GeneralSubtree ::= SEQUENCE {
             base                    GeneralName,
             minimum         [0]     BaseDistance DEFAULT 0,
             maximum         [1]     BaseDistance OPTIONAL }
      
        BaseDistance ::= INTEGER (0..MAX)
      
        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}
       

      请注意,提供的名称约束字节数组会被克隆以防止后续修改。

      参数:
      trustedCert - 一个受信任的X509Certificate
      nameConstraints - 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。仅包含扩展的值,不包括OID或关键性标志。指定null以省略该参数。
      抛出:
      IllegalArgumentException - 如果无法解码名称约束
      NullPointerException - 如果指定的X509Certificatenull
    • TrustAnchor

      public TrustAnchor(X500Principal caPrincipal, PublicKey pubKey, byte[] nameConstraints)
      创建一个TrustAnchor实例,其中最受信任的CA被指定为X500Principal和公钥。名称约束是一个可选参数,旨在在验证X.509证书路径时用作附加约束。

      名称约束被指定为一个字节数组。该字节数组包含名称约束的DER编码形式,就像它们在RFC 5280和X.509中定义的NameConstraints结构中出现的那样。该结构的ASN.1符号在TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints) 的文档中提供。

      请注意,此处提供的名称约束字节数组会被克隆以防止后续修改。

      参数:
      caPrincipal - 最受信任的CA的名称,作为X500Principal
      pubKey - 最受信任的CA的公钥
      nameConstraints - 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。仅包含扩展的值,不包括OID或关键性标志。指定null以省略该参数。
      抛出:
      NullPointerException - 如果指定的caPrincipalpubKey参数为null
      自:
      1.5
    • TrustAnchor

      public TrustAnchor(String caName, PublicKey pubKey, byte[] nameConstraints)
      创建一个TrustAnchor实例,其中最受信任的CA被指定为专有名称和公钥。名称约束是一个可选参数,旨在在验证X.509证书路径时用作附加约束。

      名称约束被指定为一个字节数组。该字节数组包含名称约束的DER编码形式,就像它们在RFC 5280和X.509中定义的NameConstraints结构中出现的那样。该结构的ASN.1符号在TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints) 的文档中提供。

      请注意,此处提供的名称约束字节数组会被克隆以防止后续修改。

      参数:
      caName - 最受信任的CA的X.500专有名称,以RFC 2253 String格式
      pubKey - 最受信任的CA的公钥
      nameConstraints - 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。仅包含扩展的值,不包括OID或关键性标志。指定null以省略该参数。
      抛出:
      IllegalArgumentException - 如果指定的caName参数为空(caName.length() == 0)或格式不正确,或无法解码名称约束
      NullPointerException - 如果指定的caNamepubKey参数为null
  • Method Details

    • getTrustedCert

      public final X509Certificate getTrustedCert()
      返回最受信任的CA证书。
      返回:
      一个受信任的X509Certificate,如果信任锚点未指定为受信任证书,则返回null
    • getCA

      public final X500Principal getCA()
      返回最受信任的CA的名称作为X500Principal。
      返回:
      最受信任的CA的X.500专有名称,如果信任锚点未指定为受信任的公钥和名称或X500Principal对,则返回null
      自:
      1.5
    • getCAName

      public final String getCAName()
      返回最受信任的CA的名称,以RFC 2253 String格式。
      返回:
      最受信任的CA的X.500专有名称,如果信任锚点未指定为受信任的公钥和名称或X500Principal对,则返回null
    • getCAPublicKey

      public final PublicKey getCAPublicKey()
      返回最受信任的CA的公钥。
      返回:
      最受信任的CA的公钥,如果信任锚点未指定为受信任的公钥和名称或X500Principal对,则返回null
    • getNameConstraints

      public final byte[] getNameConstraints()
      返回名称约束参数。指定的名称约束与此信任锚点相关联,旨在在验证X.509证书路径时用作附加约束。

      名称约束作为一个字节数组返回。该字节数组包含名称约束的DER编码形式,就像它们在RFC 5280和X.509中定义的NameConstraints结构中出现的那样。该结构的ASN.1符号在TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints) 的文档中提供。

      请注意,返回的字节数组被克隆以防止后续修改。

      返回:
      一个包含用于检查名称约束的ASN.1 DER编码的NameConstraints扩展的字节数组,如果未设置,则返回null
    • toString

      public String toString()
      返回描述TrustAnchor的格式化字符串。
      覆盖:
      toString 在类 Object
      返回:
      描述TrustAnchor的格式化字符串