tomcat - Grails 3 和 Spring Security LDAP 未加密流量

标签 tomcat grails ssl ldap spring-security-ldap

我在 Tomcat 8 上运行 Grails 3 应用程序。我开发的应用程序通过 HTTPS,并使用 grails spring security LDAP 插件进行身份验证。 (插件提供的默认登录页面,没有任何自定义)Tomcat 仅启用 HTTPS,禁用 HTTP。

我的 application.groovy 文件还包含以下用于 spring 安全的代码:

grails.plugin.springsecurity.ldap.context.server = 'ldap://192.168.3.4:389/DC=MY_DOMAIN,DC=Net'
grails.plugin.springsecurity.password.algorithm = 'SHA-256'

(其他细节只是查询什么的配置参数等)

这是我的测试场景:

我有一台运行在 Ubuntu 机器上的应用程序的 Windows 机器。 ubuntu 机器向 AD(Active Directory)机器发出 LDAP 请求。 作为引用,以下是 IP:

Windows Machine: 192.168.1.1
Tomcat Ubuntu Machine: 192.168.1.10
AD Machine: 192.168.3.4

在监控来自 .1(windows 机器)的 TCP 流量后,一切都是乱码,无法读取。当嗅探从 .10 到 .4(Tomcat 到 AD)的数据包时,LDAP 数据包是明文的。当然,我不认为这应该是这样的。我需要在 tomcat 中执行一些额外的步骤来确保 ldap 流量被加密吗?

Picture of the issue

最佳答案

我一直在读this post ,它变成了我们可以通过 ssl 运行 LDAP 本身。所以我们的连接字符串来自:

'ldap://192.168.3.4:389/DC=MY_DOMAIN,DC=Net'

'ldaps://192.168.3.4:636/DC=MY_DOMAIN,DC=Net'

注意,除此之外,您还需要确保将根证书添加到Java 中的信任列表中。对我来说,以下命令似乎可以解决问题:

keytool -import -noprompt -trustcacerts -alias myAdCert -file /location_of_cert/adcert.cer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

关于tomcat - Grails 3 和 Spring Security LDAP 未加密流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434224/

相关文章:

grails - 进行集成测试时使domain.save(failOnError:true)失败

grails - save()不刷新不保存记录吗?

apache - 安装SSL证书导致服务器重启失败

ssl - 为什么在作为 Windows 服务托管的休息服务上添加基于证书的身份验证,无法启动服务?

java - 部署spring war时Tomcat 6错误

java - Tomcat 奇怪的内存使用

java - Tomcat的 "Catalina service"和 "Servlet Engine"之间的区别

Tomcat 弹性与 Tomcat 和 Microsoft Azure

model-view-controller - 将 XML 集成到现有 View 中

c# - 使用 HTTPS/TLS 的 Web 请求导致超时