Spring安全,ssl ldap并没有证书

Jer*_*nce 2 ssl ldap certificate spring-security ssl-certificate

我使用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
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:我不想管理任何类型的证书,我想停用证书检查并继续使用ssl ldap.我怎样才能做到这一点 ?

ben*_*y23 13

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

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

要从服务器获取证书:

$ openssl s_client -showcerts -connect ldapserver:636
Run Code Online (Sandbox Code Playgroud)

输出将包含许多用分隔的条目

-----BEGIN CERTIFICATE-----
aklfhskfadljasdl1340234234ASDSDFSDFSDFSDFSD
....
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

将最后一个证书条目复制到一个文件中(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
Run Code Online (Sandbox Code Playgroud)

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

一旦完成(一次),您的代码应该在没有任何修改的情况下运行.