Java的keytool命令,带有IP地址

我正在尝试通过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地址而不是主机名?

上一篇:如何从另一台PC导出Android Studio证书或密钥库


下一篇:java-使用PKCS#7加密