3

大多数支持 SSL 的 Web 浏览器都有一个 CA 列表,它们将自动接受其证书。如果浏览器遇到授权 CA 在列表中的证书,浏览器将自动接受该证书,并建立与站点的 SSL 连接。

有一个 Java 1.6 客户端,在 JBoss 7 上运行,它是与 LDAP 服务器建立 SSL 连接所必需的。由于客户端正在生产中,如果 LDAP 服务器更新其证书而没有通知我在 JBoss 上相应地更新证书,则客户端将失败。我的问题是:如何以与浏览器无缝“接受”证书的类似方式安全地连接(ssl)到 LDAP?

我不知道这在Java中是否可行。但是,任何想法和反馈都是受欢迎的。

4

1 回答 1

3

Java 有一个默认的信任库,其中包含所有受信任的证书。这属于%JRE_HOME%\lib\security\cacert并具有所有受信任的 CA 证书(Verisign 等)。
因此,如果您的客户端https应用程序尝试连接到部署由这些颁发者签名的证书的服务器,您将没有问题(与您的浏览器发生的情况相同)。
现在到你的问题。您没有提及有关您的LDAP服务器的足够信息。
我可以想到以下几点:

  1. LDAP 服务器部署了一个由某个 CA(不是已知的 CA 之一)签名的证书。
  2. LDAP 服务器部署自签名证书

对于情况 (1),您需要做的就是将签名者的证书添加到您的信任库(即,签署您的 LDAP 服务器证书的问题的证书)。如果 LDAP 服务器更改证书,只要它从您现在设置为受信任的同一 CA 获取证书,您就不会受到影响。可以添加此受信任证书,cacerts但推荐的解决方案是使用您自己的单独信任库,将其导入并在 JVM 中设置以覆盖默认值cacerts。谷歌中有很多例子。

对于情况 (2),这是一个非常糟糕的设置并且遇到了麻烦,因为每次LDAP服务器更改证书时您都需要手动更新信任库。

但无论如何我只能假设证书由于到期而改变?我想不出另一个原因(除了私钥泄露,但这不是你描述的问题)

于 2012-09-19T19:49:46.960 回答