我如何确保Liferay使用TLS进行身份validation

请注意,这是关于Liferay和LDAP服务器之间的通信,而不是用户浏览器和Liferay之间的通信

我在这里问了这个问题,因为我在30分钟的时间里,在liferay论坛中得到了0个观点(除了我自己的观点),如果可能的话,我想今天解决这个问题。

我看过:

http://www.liferay.com/community/wiki/-/wiki/Main/LDAP

http://www.liferay.com/community/wiki/-/wiki/Main/LDAP+integration

我也读过这个:

http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/ldap

我做了一堆search,发现许多人build立了CAS并在他们的post中提到了LDAP。

问题是我没有(但?)有兴趣实施CAS。 我想为人们设置一个演示服务器,并允许他们用他们的LDAP / AD凭证login。 我select了绑定,因为我没有访问一个login,允许我(因此liferay)看到上述密码。

我知道这是疯狂的,但我也不希望他们的密码发送清楚。 🙂

liferay文档没有讨论如何确保liferay启动TLS。 我不是LDAP专家,所以也许这通常是由LDAP或AD服务器强制执行的,但即使在这种情况下,如果文档说了一些关于如何确保邪恶的员工或恶意networking入侵者可以不要只是听取生活射线login请求访问每个人的东西。

从我读过的内容来看,当前LDAP实现的正确之处在于客户端为敏感查询启动TLS通信

http://docs.oracle.com/javase/jndi/tutorial/ldap/ext/starttls.html

Liferay是这样做的吗? 我需要configuration任何额外的启用它吗?

事实上,当我谷歌的时候出现http://issues.liferay.com/browse/LEP-4225这个事实,甚至在Liferay中都引发了这个问题,但是我注意到这是针对“老的liferay”的。 ..)

基本上我要求一个真正知道的人来清理什么是不可用的,以及是否需要做任何事情来启用与LDAP / AD的安全通信。

请注意,我对客户端证书不感兴趣,或者目前不authentication客户端(liferay)到LDAP服务器。 只需将身份validation安全地委派给LDAP / AD。

编辑:我刚刚确认(与wireshark),在默认configuration“testing连接”发送我的密码在明文,所以这似乎是一个真正的问题

编辑2:也确认login尝试以明文forms发送密码。 encryption解决scheme显然是必要的。

在我看来误解了这个问题之后, 纠正了我的原始答案 – 在编辑之后,LDAP连接的意思就更清楚了。

不幸的是我现在不能给出一个好的答案,但希望有一些有用的指针:

当通过SSL使用LDAP连接时,您需要确保tomcat(连接的发起者)信任LDAP服务器提供的证书。 很有可能这个证书不是由一个已知​​和可信的机构发出的(例如,它可能是自签名的)。

请记住,SSL不仅仅意味着encryption,而且还相信另一端是它所声称的那样:如果任何中间人都可以让你连接到自己,encryption,那么依靠encryption将是愚蠢的。 所以你需要一些你连接到的身份certificate。

当你谷歌“LDAP SSL爪哇”,你会得到很多的点击给出了很好的例子,并解释如何configurationtomcat的虚拟机(及其密钥库)。 是的,这是您需要configuration信任的虚拟机。 http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html包含基本指针(在介绍性段落中),陈述

一旦安装并configuration了JSSE,您需要确保客户端信任您要使用的LDAP服务器。 您必须将服务器的证书(或其CA证书)安装在JRE的可信证书数据库中。 这是一个例子。

# cd JAVA_HOME/lib/security # keytool -import -file server_cert.cer -keystore jssecacerts 

有关如何使用安全工具的信息,请参阅Java教程的Java 2平台安全性跟踪。 有关JSSE的信息,请阅读“JSSE参考指南”

基本上:如果您没有使用keytool,那么您的Liferay VM中可能没有build立对LDAP服务器证书的信任。 请记住,您尚未完成,您仍需要将使用keytool操作的密钥库包含到虚拟机中。 我希望日志文件中的信任相关的错误消息。 由于您既不提供日志文件,也不提供您build立的信任关系,请这样做或让我知道您是否需要进一步的信息

原始答案 (在澄清LDAP连接的意思之前):

检查Liferay的portal.properties默认configuration,并在$ LIFERAY_HOME / portal-ext.properties中覆盖它。 在那里你会find默认值

 # # Set this to true to ensure users login with https. If this is set to true # and you want your HTTP session to contain your credentials after logging # in, then the property "session.enable.phishing.protection" must be set to # false or your credentials will only be available in the HTTPS session. # company.security.auth.requires.https=false 

如果你设置为true,你可能拥有你想要的一切。

这当然假设你已经正确设置了https(例如,如果你去https:// localhost /或者你的服务器在哪里(或者如果你使用自定义的端口8443),那么你的https已经设置和运行了( https:// localhost: 8443)。你如何做到这一点是configuration你的应用程序服务器的问题。一旦Liferay通过https访问它,你就可以强制执行。

应用程序必须通过安全的连接传输密码,以便更改密码和进行身份validation,因为现代专业的质量目录服务器具有检查密码质量和密码历史logging的function。 预编码密码无法检查质量或历史logging。 由于这个原因,正确configuration的目录服务器将不接受预编码的密码。