java https连接和安全弹出窗口
Posted
技术标签:
【中文标题】java https连接和安全弹出窗口【英文标题】:java https connection and security popup 【发布时间】:2012-07-03 08:31:21 【问题描述】:我的应用程序是一个签名的小程序,它是用 java 1.6 编译的
在我的应用程序中,我提出了一个 https 获取请求。即使我忽略了证书验证,JRE 仍然向我显示一个安全弹出窗口。 当我通过 Internet Explorer 尝试相同的请求时,它没有显示任何安全警告。
1)我可以通过编程方式做些什么来使这个安全弹出窗口消失吗? 2)即使我接受所有证书,为什么 JRE 会弹出警告?。 这是我忽略证书有效性的代码:
TrustManager[] trustAllCerts = new TrustManager[] new X509TrustManager()
public java.security.cert.X509Certificate[] getAcceptedIssuers()
return new java.security.cert.X509Certificate[] ;
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException
;
// Install the all-trusting trust manager
try
SSLContext sc = null;
try
sc = SSLContext.getInstance("SSL");
catch (NoSuchAlgorithmException ex)
MainScreen.toConsole(ex);
sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
@Override
public boolean verify(String hostname, SSLSession session)
return true;
);
catch (Exception e)
这是安全警告的屏幕截图:
【问题讨论】:
您的证书是否由浏览器知道的 CA 签名? applet 是verisign 签名的,ssl 上的证书是rapidssl。 正如我通过浏览器发出相同请求时所说的那样。没有安全警告。 【参考方案1】:只有我能想到的:确保rapidssl的CA证书在你的java证书存储中。检查this guide。我知道它在您的浏览器中,但 java 可能不知道它。
【讨论】:
以上是关于java https连接和安全弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章