java:加载带有客户端证书的HTTPS url
我安装了pkcs12证书,可以在浏览器上加载url“httpsURL”
但我的独立java程序不能做到这一点
System.setProperty("javax.net.ssl.keyStore", "d:/keys2222/prince.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
URL url = new URL("httpsURL"); // URL is perfect
URLConnection con = url.openConnection(); // fails here
请帮帮我
# 1 楼答案
您获得
java.security.cert.CertificateException: No name matching localhost found
的原因是证书的CN
与您访问服务器的URL的主机名不匹配。因此,您要么需要使用正确的CN
创建一个证书,要么可以编写自己的HostNameVerifier
来忽略这个问题。但是如果你这么做了,请确保在完成测试时删除该代码This document指定如何执行此操作:# 2 楼答案
由于您使用的是自签名证书,JVM不信任它,因此
https
URL不起作用。 您需要使用keytool
将其添加到JVM的密钥库中 看这个article编辑:抱歉,我忘了提到需要指定JVM默认密钥库
cacerts
。这个article将向您展示它是如何完成的还请注意,您的证书必须与URL完全匹配