模块  java.base
软件包  javax.net.ssl

Class SNIHostName


  • public final class SNIHostNameextends SNIServerName
    此类的实例表示服务器名称指示(SNI)扩展中的类型为host_name的服务器名称。

    如第3节“服务器名称指示”( TLS Extensions (RFC 6066))中所述 ,“HostName”包含服务器的完全限定DNS主机名,如客户端所理解的。 主机名的编码服务器名称值使用ASCII编码表示为字节字符串,不带尾随点。 这允许通过使用RFC 5890中定义的A标签(应用程序的国际化域名的有效字符串的ASCII兼容编码(ACE)形式(IDNA))来支持国际化域名(IDN)。

    请注意, SNIHostName对象是不可变的。

    从以下版本开始:
    1.8
    另请参见:
    SNIServerNameStandardConstants.SNI_HOST_NAME
    • 构造方法详细信息

      • SNIHostName

        public SNIHostName​(String hostname)
        使用指定的主机名创建SNIHostName

        请注意,根据RFC 6066 ,主机名的编码服务器名称值为StandardCharsets.US_ASCII -compliant 在该方法中, hostname可以是用户友好的国际化域名(IDN)。 IDN.toASCII(String, int)被用于强制ASCII字符中的主机名(见限制RFC 3490RFC 1122RFC 1123 )并翻译hostname成ASCII兼容性编码(ACE),为:

          IDN.toASCII(hostname, IDN.USE_STD3_ASCII_RULES); 

        hostname参数是非法的,如果它:

        • hostname是空的,
        • hostname以尾随点结尾,
        • hostname不是符合RFC 3490规范的有效国际化域名(IDN)。
        参数
        hostname - 此服务器名称的主机名
        异常
        NullPointerException - 如果 hostnamenull
        IllegalArgumentException - 如果 hostname是非法的
    • 方法详细信息

      • equals

        public boolean equals​(Object other)
        将此服务器名称与指定的对象进行比较。

        根据RFC 6066 ,DNS主机名不区分大小写。 当且仅当它们具有相同的名称类型且主机名在与案例无关的比较中相等时,两个服务器主机名是相等的。

        重写:
        equals在类 SNIServerName
        参数
        other - 要与之比较的其他服务器名称对象。
        结果
        当且仅当 other被认为与此实例相同 other为true
        另请参见:
        Object.hashCode()HashMap
      • toString

        public String toString()
        返回对象的字符串表示形式,包括此SNIHostName对象中的DNS主机名。

        表示的确切细节未指定,可能会有变化,但以下内容可能被视为典型:

          "type=host_name (0), value=<hostname>" 
        “<hostname>”是主机名的ASCII表示,可以包含A标签。 例如,伪主机名的返回值可能如下所示:
          "type=host_name (0), value=www.example.com" 
        要么
          "type=host_name (0), value=xn--fsqu00a.xn--0zwm56d" 

        请注意,表示的确切细节未指定,可能会有变化。

        重写:
        toStringSNIServerName
        结果
        对象的字符串表示形式。
      • createSNIMatcher

        public static SNIMatcher createSNIMatcher​(String regex)
        SNIHostName创建SNIMatcher对象。

        服务器可以使用此方法验证可接受的SNIHostName 例如,

          SNIMatcher matcher =         SNIHostName.createSNIMatcher("www\\.example\\.com"); 
        将接受主机名“www.example.com”。
          SNIMatcher matcher =         SNIHostName.createSNIMatcher("www\\.example\\.(com|org)"); 
        将接受主机名“www.example.com”和“www.example.org”。
        参数
        regex - 代表要匹配的主机名的 regular expression pattern
        结果
        一个 SNIMatcher对象 SNIHostName小号
        异常
        NullPointerException - 如果 regexnull
        PatternSyntaxException - if the regular expression's syntax is invalid