我正在尝试通过https网址获取图片,但我遇到了一些问题.我用Java的keytool命令生成一个密钥库.如果我指定公共名称(CN)等于我的主机名,例如CN = JONMORRA,然后尝试通过我的主机名查询,例如https://JONMORRA:8443/,那么它工作正常.但是,如果我将公共名称指定为我的IP地址,例如CN = 192.168.56.1,并尝试通过我的IP地址查询,例如https://192.168.56.1:8443/然后我收到错误
HTTPS主机名错误:应为< 192.168.56.1>
这说明我的主机名是错误的,即使这是我在密钥库中指定的内容.
我想使用IP地址而不是主机名,这样我就可以在Linux和Windows框之间进行查询,而无需担心主机名.
为什么CN不接受IP地址,我该如何解决?
谢谢
解决方法:
此代码段可能适合您:
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
如果您尝试使用此代码,但它不起作用,请发布为urlHostName和session.getPeerHost()打印的内容.
另外,为什么让Windows和Linux机箱互操作需要使用IP地址而不是主机名?