gpt4 book ai didi

ssl - 通过 SSL : need more details 使用 LDAP 的 Spring Security

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:45 26 4
gpt4 key购买 nike

我有一个通过 LDAP 使用身份验证的 Web 应用程序。它工作完美,但需要生产版本才能使用 SSL。我们有一个运行在“ldaps://ourserver.com:636”的服务器,但是当我尝试连接到它时 Spring Security 抛出以下异常:

Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targe

Apache Directory Studio 也会警告我有关未知证书的信息,但允许忽略检查它并最终连接并读取所需的数据。

这里有很多关于如何通过 SSL 实现 LDAP 的问题和答案,但没有一个提供完整的解决方案。我有 two opportunities : 使 certificate trusted或完全禁用证书检查。无论我选择哪种方式,我都无法弄清楚如何使用 Spring Security 的机制:

  1. 如果我选择使用 keytool 并使证书受信任,我不知道 JVM/Tomcat/Spring Security 如何找出哪个 password I have defined (-keypass changeit).
  2. 如果我选择禁用证书验证,我不知道哪里是the code应该放置。

我也很好奇 Apache Directory Studio 如何能够在没有 keytool 导入的情况下使证书对自己可信 - 这会显着降低应用程序的可移植性?这样的解决方案非常适合我的网络应用程序,但我还没有找到任何类似的解决方案。

最佳答案

这是我能够使用的解决方案。我必须了解的关键是,JVM 和带有 webapp 的容器 都不需要知道别名和密码。 检查所有已注册的证书是 JVM 的头疼,这与您的 webapp 无关。不幸的是,该解决方案意味着您需要为整个 JVM 安装证书。这使得 webapp 的可移植性较差,但至少它可以正常工作。我决定提供以下带有 webapp 源的bash 脚本,以便其他开发人员可以轻松地在他们的机器上安装证书:

SERVER="mydomain:636" 
CRT_NAME="mydomain.crt"
CRT_ALIAS="mydomain_cert"

echo -n | openssl s_client -connect $SERVER | sed -ne '/-BEGIN
CERTIFICATE-/,/-END CERTIFICATE-/p' > $CRT_NAME

$JAVA_HOME/bin/keytool -import -alias $CRT_ALIAS -keystore $JAVA_HOME/lib/security/cacerts -file $CRT_NAME -storepass changeit

您可能希望添加额外的错误检查,我已省略它们以简化脚本。您将需要 root 权限才能启动第二个命令。

关于ssl - 通过 SSL : need more details 使用 LDAP 的 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com