Answers:
取自此页面
server.xml
使用散列算法在元素上添加“摘要”属性作为值(可能的值例如md5
,sha-1
或sha-256
,强烈建议使用后者)。$CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
<YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
password
属性的值替换tomcat-users.xml
为<ENCRYPTED_PASSWORD>
另请参阅:Tomcat摘要密码
digest.bat -a "md5" <YOUR_PASSWORD>
对于来这里寻找有关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>
使用此配置,请使用以下命令从您的密码生成哈希输出:
$CATALINA_HOME/bin/digest.sh -a "PBKDF2WithHmacSHA512" -i 100000 -s 16 -k 256 -h "org.apache.catalina.realm.SecretKeyCredentialHandler" "YOUR_PASSWORD"
以及您选择的迭代计数和盐大小(以字节为单位)。请注意,由于错误60446,密钥长度必须与server.xml中定义的密钥长度相同。但是应该很快在上游修复它。
警告!请确保您的密码未保存在Shell的命令历史记录中。在bash中,这是通过在命令前面加上空白来实现的。
该命令将以纯文本格式输出密码,并以十六进制表示形式输出结果凭证,您应该将其用作tomcat-users.xml中的password属性。
1)生成密码:/bin>digest.bat -s 0 -a sha-256
示例:/ bin> digest.bat -s 0 -a sha-256 admin
使用的密码是:8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
*重要说明:您必须使用“ -s 0”(盐0),否则它将不起作用。
2)将上面的密码粘贴到您的tomcat-users.xml文件中。
例:
<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>
3)配置server.xml以使用基于SHA-256摘要哈希的密码:
4)将您的web.xml配置为使用“ DIGEST”密码,并更新RealmName使其与上面的内容匹配(在HTMLManager部分中)
<catalina_home>/webapps/manager\WEB-INF\web.xml
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>UserDatabase</realm-name>
</login-config>
Full context:
<servlet>
<servlet-name>HTMLManager</servlet-name>
<servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
… SNIPPED_FOR_BREVITY ...
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>UserDatabase</realm-name>
</login-config>
<multipart-config>
<!-- 50MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>
"sha-1"
或"sha-256"
。