我想验证给定证书(X509Certificate对象)的主机名。也就是说,检查主机名是否与证书的“主题备用名称”或“公用名称”字段中列出的任何主机名匹配。
我在网上读到你可以导入javax.net.ssl.HostnameVerifier
然后使用HttpsURLConnection.getDefaultHostnameVerifier().verify(...)
来实现。但是,verify
函数需要一个SSLSession对象,所以它不能与X509Certificate对象一起工作。
我很感激你的帮助。谢谢。
1条答案
按热度按时间31moq8wy1#
为了验证服务器提供的主机名是否包含在证书的CN或SAN中包含的主机名中,您需要从连接中读取主机名,并从证书中读取SAN & CN,如下所示:
请注意,当建立SSL连接时,这正是HostnameVerifier所做的。