【问题标题】:tomcat server.xml encrypted passwordtomcat server.xml 加密密码
【发布时间】:2017-08-10 07:35:52
【问题描述】:

我想从 Tomcat 6 迁移到 Tomcat 9。Tomcat 6 中存在一个问题,即资源密码是纯文本的。有没有办法在 Tomcat 9 中加密它们?

资源的一个例子是:

    <Resource name="jdbc/HasanDB" auth="Container" type="javax.sql.DataSource"
              maxTotal="10" maxIdle="15" minIdle="3" initialSize="2" maxWaitMillis="10000"
              removeAbondend="true" removeAbondendTimeout="300"
              username="hasan" password="hasanpass" driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/HasanDB"/>

如果没有可用的加密方法,是否可以使用软件在 Tomcat 启动时提供密码?

【问题讨论】:

标签: tomcat server.xml


【解决方案1】:

这甚至有自己的部分in the Tomcat FAQ。基本上:密码的加密将是蛇油——你只能让人们更难获得密码。

FAQ 提供了几个选项,其中我最喜欢的部分是他们建议可以轻松用于自定义密码加密实施的加密方法:

XOR 和 ROT13 是很好的候选者,因为它们的强度与您实际获得的保护相匹配。

如果即使在收到常见问题解答的警告后,您仍想采取一些措施,请查看Tomcat Vault

【讨论】:

  • 我已经读过,但我不知道这是否适用于Tomcat 9(它可以有更好的方法),我也不知道如何实现它。
  • 1) 常见问题解答谈到普遍缺乏安全性,这一点没有改变。它只是看起来更安全,但您应该担心其他事情。 2)“如何实现it”——你在说FAQ中哪些不推荐的选项? 3)在这个问题的答案中可以找到一种只编码密码的简单方法:stackoverflow.com/questions/16194052
  • 我已经实现了但是没有读取setKeystorePass方法
  • 当然,您必须采用这一点,并以这种方式对密码进行编码 - 问题是关于对密钥库的密码进行编码,而您想对数据库密码进行编码。 password="&amp;#99;&amp;#104;&amp;#105;&amp;#107;&amp;#115;" 将是您可以尝试的可能结果之一
【解决方案2】:

Tomcat 带有一个脚本,允许我们加密密码。此脚本在 Windows 上称为 digest.bat 或在 Linux 上称为 digest.sh,可在 bin 目录中找到。有了这个,我们可以指定我们想要使用的加密算法——这里我们使用 SHA-256——然后我们输入我们想要加密的文本 CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password} 示例:- CATALINA_HOME/bin>digest.sh -a sha-256 hasanpass

【讨论】:

  • 此工具对密码进行哈希处理。但是当它们被散列时,它们是否可以在 Server.xml 中使用,请参见此处:wiki.apache.org/tomcat/FAQ/Password
  • 它所做的只是在标准输出上打印结果。
猜你喜欢
  • 2021-10-21
  • 2018-01-20
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多