如何为 Tomcat 用户使用非明文密码?

Joh*_*ock 19 tomcat tomcat6

在 Ubuntu 10.04.3 LTS 上,安装 Tomcat 6 后,添加 manager/admin 帐户的方法是将这样的记录添加到/etc/tomcat6/tomcat-users.xml

<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>
Run Code Online (Sandbox Code Playgroud)

该密码是明文形式,我对此感到不舒服。有没有办法改用散列之类的东西?如果您有非 Ubuntu 解决方案,我可能可以翻译它。

Ale*_*lex 15

取自本页

  1. server.xml使用哈希算法在您的元素上添加“摘要”属性作为值(可能的值为md5,sha-1sha-256,强烈建议使用后者)。
  2. $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. 您将获得以下形式的输出 <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. 将用户password属性的值替换tomcat-users.xml<ENCRYPTED_PASSWORD>
  5. 重启tomcat

另请参阅:Tomcat 摘要密码


Nik*_*olm 9

对于来这里寻找有关 Tomcat 8.0.15 或更新版本信息的任何人,您可能应该改用 SecretKeyCredentialHandler 和 PBKDF2,因为它比简单的消息摘要更安全(即更难破解)。

例如,在您的 server.xml 中:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
       resourceName="UserDatabase">
   <CredentialHandler className="org.apache.catalina.realm.SecretKeyCredentialHandler"
                      algorithm="PBKDF2WithHmacSHA512"
                      keyLength="256"
   />
</Realm>
Run Code Online (Sandbox Code Playgroud)

使用此配置,使用以下命令从您的密码生成散列输出:

 $CATALINA_HOME/bin/digest.sh -a "PBKDF2WithHmacSHA512" -i 100000 -s 16 -k 256 -h "org.apache.catalina.realm.SecretKeyCredentialHandler" "YOUR_PASSWORD"
Run Code Online (Sandbox Code Playgroud)

使用您选择的迭代计数和盐大小(以字节为单位)。请注意,由于存在错误 60446,密钥长度需要与 server.xml 中定义的相同。不过,它应该很快就会在上游修复。

警告!请确保您的密码不会保存在您的 shell 的命令历史记录中。在 bash 中,这是通过在命令前添加一个空格来实现的。

该命令将以纯文本格式输出您的密码和生成的凭据的十六进制表示,您应该将其用作 tomcat-users.xml 中的密码属性。

CredentialHandler 组件的文档可以在这里找到。可以在此处找到算法属性的可能值。