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

标签 java ssl ldap ssl-certificate ca

我们有一个在 GlassFish 3 网络服务器中运行的 Java 网络应用程序。

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

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

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

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

"We added additional servers behind the load balancer. If they trust just the server CERT instead of the CA then you would be experiencing this problem. They should trust the CA or should not perform any certificate validation"

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

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


现在我很困惑!

我们是否可以获取 CA 证书并信任它,以便自动信任该 CA 颁发的任何证书..

如果可以,该怎么做?

CA 证书是从 LDAP 服务器获取还是我们必须要求它?

或者我是否为此创建了错误的思维模型或者是否缺少概念?

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

最佳答案

他们所说的是服务器使用通用 CA(如 Verisign、Thwate 等)进行签名。您需要做的就是信任该 CA(您通过导入 CA 的受信任根证书来完成此操作)。

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

关于java - 在 Java 6(GlassFish 3 服务器)中设置 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814395/

相关文章:

c++ - ADSI(ADsOpenObject ) 始终绑定(bind)到特定域和特定用户

ldap - 在 inetOrgPerson 的 userSMIMECertificate 属性中添加证书

java - Scanner.nextInt(),超出范围避免?

ssl - SSL 使用哪种对称 key 算法?

java - 如何调用仅使用 SELECT 的存储过程

ssl - 如何将SSL证书导入系统?

ssl - office.outlook.com 和 smtp.office365.com SSL 证书在调用之间随机变化

c# - 从 Active Directory c# 检索图片

Java:我该如何关闭包裹在 SLF4J 外观中的异步附加程序?

Java 列表的 .remove 方法仅适用于每个循环中的倒数第二个对象