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证书助力公众平台升级HTTPS