【发布时间】:2011-12-08 13:38:02
【问题描述】:
我正在尝试建立与 https url 的连接,但由于它仍在测试中,因此 url 会重定向到测试环境,导致浏览器向用户提示一条消息,粗略地说证书是受信任的,有效,但与域名不匹配,如果他们想继续。我很难在 Java 中处理这个问题。我找到的所有答案都建议使用这样的 TrustManager
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
return;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
return;
}
}};
sslContext.init(kmf.getKeyManagers(), trustAllCerts, new SecureRandom());
但这并没有改变任何东西。
身份验证涉及在读取客户端证书的私钥时输入密码,这在浏览器和我的应用程序中的工作方式相同且正确,在此身份验证之后,浏览器中会弹出提示或连接返回'我的应用程序中的 bad_certificate' 错误。是否有其他方法可以完全忽略域验证或出现相同的提示?
为了清楚起见,我的应用程序不会导致出现密码提示,因为我对其进行了编程或其他任何东西,我认为它只是源于 Windows 检测到我的应用程序试图访问证书的私钥,所以我假设第二个prompt 将以类似的方式工作,但我还没有找到任何参数来实现这一点。
【问题讨论】:
标签: java ssl x509certificate