如何获取与证书(java.security.cert.X509Certificate
)匹配的所有主机名和IP列表,包括主题备用名称?我只发现了javax.net.ssl.HostnameVerifier
s的各种实现。
答案 0 :(得分:6)
RFC 2818, Section 3.1中定义了主机名验证如何与证书绑定(对于HTTPS,对于其他协议,请参阅RFC 6125,但它非常相似)。
简而言之:
X509Certificate
实例,并迭代getSubjectAlternativeNames()
的结果。请注意,证书中的某些主机名可能包含通配符,因此您无法构建可能匹配的详尽列表。 wilcards的这个问题当然是编写验证程序通常比尝试获取完整列表更有意义的原因之一。 (有关位置的详细信息,请阅读RFC 2818第3.1节,并记住点本身不是通配符表达式的一部分,因此*.example.org
与example.org
不匹配。)