Jon*_*Jon 3 java ssl keystore keytool
我正在尝试通过 https URL 获取图像,但遇到了一些问题。我使用 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 地址,我该如何解决?
谢谢
要使用 acutely 生成有效证书keytool
,请使用:
keytool -keystore keystore.jks -genkey -ext SAN=IP:{IP_ADDRESS}
Run Code Online (Sandbox Code Playgroud)
例如:
keytool -keystore keystore.jks -genkey -ext SAN=IP:192.168.1.1
Run Code Online (Sandbox Code Playgroud)
这个片段可能适合你:
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);
Run Code Online (Sandbox Code Playgroud)
如果您尝试此代码,但它不起作用,请发布urlHostName
和的打印内容session.getPeerHost()
。
另外,为什么 Windows 和 Linux 机器互操作需要使用 IP 地址而不是主机名?
归档时间: |
|
查看次数: |
11827 次 |
最近记录: |