SSL证书升级导致问题

时间:2011-03-29 00:19:26

标签: java ssl httpclient ssl-certificate

我们正在与远程服务器通话以验证用户身份。 Web服务器使用由Verisign签名的SSL证书。数据通过HTTP进行交换,我们已将ThreadSafeClientConnManager配置为使用JVM默认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);

最近,Web服务器更新了他们的SSL证书,这导致我们的应用程序中断。我们可以做些什么来避免这个问题?

请帮忙。

1 个答案:

答案 0 :(得分:2)

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

这是一个非常广泛的问题,更详细的信息可以帮助查明确切的问题,但这里有两件事需要检查。

  1. CA在升级SSL证书时使用了什么?它是自签名的吗? 如果站点已升级为使用使用非标准根证书颁发机构的SSL证书,则需要使用keytool导入特定SSL证书,以告知本地JVM证书是否可信。如果他们使用新的权限(并且您的组织信任该root权限),那么您可能需要导入新的根证书颁发机构,默认情况下大多数专业都受支持,但有时我被迫导入新的权限。
  2. http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

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