2011-03-29 140 views
-1

我们正在与远程服务器通信以验证用户身份。 Web服务器使用Verisign签署的SSL证书。该数据是通过HTTPS交换,我们已经配置了ThreadSafeClientConnManager使用JVM默认SSL厂:SSL证书升级导致问题

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(new Scheme("http", PlainSocketFactory 
       .getSocketFactory(), 80)); 
schemeRegistry.register(new Scheme("https", SSLSocketFactory 
       .getSocketFactory(), 443)); 
ClientConnectionManager manager = new ThreadSafeClientConnManager(
       sDefaultHttpParams, schemeRegistry); 

近日,在网络服务器上更新他们的SSL证书,这已经引起了我们的应用突破。我们能做些什么来避免这个问题?

请帮忙。

+0

你还没有发布任何需要帮助的细节。什么,确切地说,你的意思是“休息”? – bmargulies 2011-03-29 00:39:43

+0

我们的客户端无法与服务器建立会话并登录用户。 – Samuh 2011-03-29 00:44:09

+0

获取异常?什么例外? – bmargulies 2011-03-29 00:45:03

回答

2

没有什么事情可以真正做到“避免”问题,因为它不是真正的问题,它是SSL证书和权威信任的核心“功能”。

这是一个相当广泛的问题,更详细的信息可以帮助查明确切的问题,但这里是前两项要检查的问题。

  1. 什么CA他们升级他们的SSL证书使用?它是否自签名?
    如果该站点已升级为使用SSL证书或使用非标准根证书颁发机构,那么您需要使用keytool导入特定的SSL证书,以告诉本地JVM该证书是受信任的。如果他们正在使用新权限(并且您的组织信任该root权限),那么您可能需要导入新的根证书颁发机构,大多数专业默认情况下都会受支持,但有时我不得不导入新的根证书颁发机构。

http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

  1. 确保他们的证书是正确的链接。我看到的第二个最常见的问题是由站点管理员进行证书链接(安装)。不幸的是,IE/Mozilla/Java ...都使用不同的验证机制来确保SSL证书是“有效的”,我发现许多网站管理员不知道如何正确链接证书到其网站上的相应权威机构。您应该在浏览器中打开证书(我将以多个方式打开证书)并检查信任链以确保网站上的证书链一直备份到期望的根CA. (这也是你如何检查#1的根CA)。如果它没有信任链,那么JVM SSL验证将失败(而IE浏览器在老版本的IE中会看到Internet Explorer调用非链接证书“有效”)。
+2

同时检查正在使用的信任库会很重要。默认信任库是否被覆盖或编辑?它由外部服务器使用的证书是自签名的(甚至是过期的),您可以使用Web上的InstallCert java程序导入证书。 – hooknc 2011-03-29 02:53:38

+0

感谢@ hooknc的信息! – Samuh 2011-03-31 19:11:02