Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取与证书匹配的所有主机名的列表_Java_Ssl_Certificate_Ssl Certificate - Fatal编程技术网

Java 获取与证书匹配的所有主机名的列表

Java 获取与证书匹配的所有主机名的列表,java,ssl,certificate,ssl-certificate,Java,Ssl,Certificate,Ssl Certificate,如何获取与证书(java.security.cert.X509Certificate)匹配的所有主机名和IP的列表,包括使用者备选名称?我只发现了javax.net.ssl.HostnameVerifier的各种实现。s.中定义了主机名验证与证书的关联方式(对于HTTPS,对于其他协议,请参阅,但非常类似) 简言之: 使用您的X509Certificate实例,并遍历的结果 每个条目将是一个两元素列表。第一个是类型,第二个是实际值 类型2表示DNS名称,类型7表示IP地址。你需要分别对待他们

如何获取与证书(
java.security.cert.X509Certificate
)匹配的所有主机名和IP的列表,包括使用者备选名称?我只发现了
javax.net.ssl.HostnameVerifier的各种实现。
s.

中定义了主机名验证与证书的关联方式(对于HTTPS,对于其他协议,请参阅,但非常类似)

简言之:

  • 使用您的
    X509Certificate
    实例,并遍历的结果
  • 每个条目将是一个两元素列表。第一个是类型,第二个是实际值
  • 类型2表示DNS名称,类型7表示IP地址。你需要分别对待他们
  • 如果有任何SAN IP地址条目,请将这些地址添加到IP地址列表中
  • 如果有任何SAN DNS名称条目,请将这些名称添加到IP地址列表中
  • 如果没有任何SAN DNS名称条目(但可能仍有IP SAN AFAIK),则可以读取证书的主题DN并提取其CN(公共名称)并将其添加到列表中。(请参见如何提取CN。请注意,RFC 2818中“最具体”CN的概念在RFC 6125中是一个模糊的概念。)
请注意,证书中的某些主机名可能包含通配符,因此您将无法构建可能匹配的详尽列表。wilcards的这个问题无疑是编写验证器比试图获取完整列表更有意义的原因之一。(有关位置的详细信息,请阅读RFC 2818第3.1节,并记住点本身不是通配符表达式的一部分,因此
*.example.org
example.org
不匹配)