在Java 6中设置SSL(GlassFish 3服务器)

在Java 6中设置SSL(GlassFish 3服务器),java,ssl,ldap,ssl-certificate,ca,Java,Ssl,Ldap,Ssl Certificate,Ca,我们有一个Java web应用程序在GlassFish 3 web服务器中运行 我们的应用程序连接到LDAP服务器进行身份验证。现在,客户正在SSL上运行LDAP,即ldaps 因此,我们从他们的LDAP服务器获取证书,并将其添加到我们的可信证书中。但我们有时还是会: 异常为javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.c

我们有一个Java web应用程序在GlassFish 3 web服务器中运行

我们的应用程序连接到LDAP服务器进行身份验证。现在,客户正在SSL上运行LDAP,即
ldaps

因此,我们从他们的LDAP服务器获取证书,并将其添加到我们的可信证书中。但我们有时还是会:

异常为javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径]

LDAP管理员进一步调查,他说:

“我们在负载平衡器后面添加了其他服务器。如果 只信任服务器证书而不是CA,这样您就可以 遇到此问题。他们是否应该信任CA 执行任何证书验证“

这意味着负载平衡器后面运行着许多LDAP服务器,每台服务器都有不同的证书,我们只信任一个特定的证书

现在他们说的解决方案是信任CA而不是个人证书


现在,在这一点上,我感到困惑

在这种情况下,我们是否可以获取CA证书并对其进行信任,从而自动信任该CA颁发的任何证书

如果是这样,怎么做

CA证书是从LDAP服务器获取的,还是我们必须请求它

或者我为这个问题创建了一个错误的思维模式,或者缺少了一个概念


还有什么是“受信任的根证书”?

他们说的是服务器是使用公共CA(如Verisign、Thwate等)签名的。您所需要做的就是信任该CA(您可以通过导入CA的受信任根证书来做到这一点)

您需要找出正在使用的CA,然后检查您的cacerts文件,看看您是否已经信任该CA(显然您不信任,因为您收到了错误)。有很多方法可以找到正在使用的CA,但是您可以简单地询问LDAP管理员正在使用哪个CA。有些公司还使用本地CA,这很可能就是ldap服务器的设置方式