在Java 6中设置SSL(GlassFish 3服务器)
我们有一个Java web应用程序在GlassFish 3 web服务器中运行 我们的应用程序连接到LDAP服务器进行身份验证。现在,客户正在SSL上运行LDAP,即在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
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服务器的设置方式