在Liferay的context.xml中加密明文数据库密码

时间:2015-07-03 09:00:50

标签: tomcat encryption liferay-6

如何在context.xml文件中加密明文密码?

我已尝试使用此处所述的摘要:https://serverfault.com/questions/295628/how-do-i-use-non-plaintext-passwords-for-tomcat-users但我的portlet最终会出现“BeanLocator因servlet上下文而为空”错误。

还试过创建这个: How to avoid storing passwords in the clear for tomcat's server.xml Resource definition of a DataSource?但它无法加载我的类文件(NoClassDefFound异常)

或者上述方法是否有效,我只是在实现它时遇到了一些问题?

1 个答案:

答案 0 :(得分:2)

您提供的第一个链接不适用于问题,因为它适用于tomcat验证的用户 - 而不是数据源。 Liferay使用完全不同的方式来识别用户并正确地散列密码。

second link是您正在寻找的 - 为了使其正常工作,您必须将您的datasourcefactory打包到jar文件中并将其添加到tomcat的全局类路径,例如在tomcat/lib中,或者对于标准的Liferay包,tomcat/lib/ext。如果您将jar打包在Web应用程序中,它将无法工作,因为它需要在整个服务器端可用,而不仅仅是在特定的Web应用程序中。

请注意对该答案的评论:这比加密更加争抢,因为任何攻击者都可以轻松撤消相同的过程。是的,它会提高标准,但它并没有真正增加强大的安全性。密码件迟早需要服务器可读,除了在服务器启动时强制手动输入密码之外,几乎没有办法使这个过程安全。当然,它也不是很受欢迎。

另一个选择是使用支持非明文保存密码的appserver。同样的限制适用于此:它只能加密这些密码,而不是以安全的方式加密。