一尘不染

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

tomcat

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

我已经尝试按照以下说明使用摘要:https :
//serverfault.com/questions/295628/how-do-i-use-non-plaintext-passwords-for-
tomcat-users,但我的portlet最终会带有“对于Servlet上下文,BeanLocator为空”错误。

还尝试过创建以下内容:
如何避免在tomcat的server.xml数据源的资源定义中明文存储密码?但是它无法加载我的类文件(NoClassDefFound异常)

还是上述方法有效,我在实施该方法时遇到了一些问题?


阅读 343

收藏
2020-06-16

共1个答案

一尘不染

您提供的第一个链接不适用于该问题,因为它是供tomcat进行身份验证的用户使用的,而不是数据源。Liferay使用完全不同的方式来识别用户并已经正确哈希了密码。

在第二个环节是你要找的东西-为了使其工作,你必须打包datasourcefactory在一个jar文件,并把它添加到Tomcat的全局类路径,例如tomcat/lib,或者对于一个标准的Liferay捆绑,tomcat/lib/ext。如果将jar打包在Web应用程序中,则它将不起作用,因为它需要在整个服务器端可用,而不仅是在特定的Web应用程序中可用。

请注意对该答案的评论:与加密相比,这是加扰,因为任何攻击者都可以轻易撤消相同的过程。是的,这将提高标准,但实际上并没有增加强大的安全性。迟早服务器需要读取密码,除了强制在服务器启动时手动输入密码外,几乎没有其他方法可以确保此过程的安全。当然,这也不是很流行。

还有另一种选择是使用支持开箱即用的密码非明文保存的应用服务器。同样的限制也适用于此:它只能扰乱那些密码,不能以安全的方式加密。

2020-06-16