Spring 安全性、ssl ldap 和无证书

Posted

技术标签:

【中文标题】Spring 安全性、ssl ldap 和无证书【英文标题】:Spring security, ssl ldap and no certificate 【发布时间】:2012-04-11 19:29:24 【问题描述】:

我使用 spring security 来管理登录。我已将 spring security 配置为连接到使用 ssl (ldaps) 保护的 ldap 服务器。

此服务器是测试服务器,没有有效证书。当我尝试测试登录时,spring security 抱怨证书无法验证(当然!):

sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
 valid certification path to requested target

我的问题很简单:我不想管理任何类型的证书,我想停用证书检查并继续使用 ssl ldap。我该怎么做?

【问题讨论】:

你能说明你是如何配置你的 ldap 客户端来使用 ldaps 的吗? 我在 8 年前发布了这个问题。我最终丢失了这段代码;) 【参考方案1】:

听起来LDAP服务器的证书只是自我证书而不是无效的。

对我来说,最简单的解决方案是获取该证书并将其添加到 java 中的 cacerts 信任库中。完成后,代码将无需任何修改即可运行。

从服务器获取证书:

$ openssl s_client -showcerts -connect ldapserver:636

输出将包含许多用

分隔的条目
-----BEGIN CERTIFICATE-----
aklfhskfadljasdl1340234234ASDSDFSDFSDFSDFSD
....
-----END CERTIFICATE-----

将最后一个证书条目复制到一个文件中 (ldapca.crt)

然后,将其添加到 $JRE_HOME/lib/security 中的 java 密钥库

$ cd $JRE_HOME/lib/security
$ keytool -import -alias ldapca_self_sign -keystore cacerts -storepass changeit -file ldapca.crt

这意味着,您将信任 LDAP 服务器上的证书并在您的测试环境中正确使用 SSL(而不是使用一些自定义代码来关闭部分 SSL 检查)。

一旦完成(一次),您的代码应该无需任何修改即可运行。

【讨论】:

感谢您的回答。问题在于:我与一个使用 maven 和 svn 的团队一起工作。我想避免每个开发人员都执行这种程序。有没有一种简单的方法来做到这一点只使用弹簧配置? 您可以创建一个单独的信任库文件(基本上使用具有不同文件名的相同 keytool 命令,将该文件添加到 SVN,然后按照以下步骤操作:***.com/questions/6431383/using-spring-ldap-with-ssl 但是,我个人会向每个开发人员发送一封电子邮件,附上 ldapca.crt 文件并让他们运行命令,因为我认为 not-having-test-specific-code-in-your-codebase 的好处超过了开发人员必须的便利运行一次命令。

以上是关于Spring 安全性、ssl ldap 和无证书的主要内容,如果未能解决你的问题,请参考以下文章

安装好的SSL证书无效怎么办?

如何启用SSL安全证书

微信公众号运营必备:数安时代SSL证书助力公众平台升级HTTPS

网站如何启用SSL安全证书?

如何使用 UnboundID SDK 连接带有 SSL 服务器证书的 LDAP 服务器?

公司网站如何申请OV SSL证书?