Module  java.base
软件包  javax.net.ssl

Class SNIHostName



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

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

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

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

      • SNIHostName

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

        请注意,根据RFC 6066 ,主机名的编码服务器名称值为StandardCharsets.US_ASCII兼容。 在这种方法中, 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主机名不区分大小写。 两个服务器主机名相等,如果且仅当它们具有相同的名称类型,并且主机名在与个别无关的比较中相等。

        重写:
        equalsSNIServerName
        参数
        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" 

        请注意,表示的确切细节未经说明,可能会有变动。

        重写:
        toString SNIServerName
        结果
        对象的字符串表示形式。
      • 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 s
        异常
        NullPointerException - 如果 regexnull
        PatternSyntaxException - if the regular expression's syntax is invalid