在Ubuntu 10.04.3 LTS上,在安装Tomcat 6之后,添加一个pipe理员/pipe理员帐户的方法是在/etc/tomcat6/tomcat-users.xml添加一个这样的logging:
<role rolename="manager"/> <role rolename="admin"/> <user username="user" password="password" roles="manager,admin"/>
这个密码是纯文本的,我对此不太舒服。 有没有办法像使用哈希代替? 如果你有一个非Ubuntu的解决scheme,我可以翻译它。
采取从这页
md5 , sha-1或sha-256 ,强烈推荐后者),在server.xml的元素中添加“digest”属性。 $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD> <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>forms获得输出<YOUR_PASSWORD>:<ENCRYPTED_PASSWORD> tomcat-users.xml的用户password属性的值replace为<ENCRYPTED_PASSWORD> 另请参阅: Tomcat摘要密码
对于任何人来这里寻找关于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>
使用此configuration,使用以下命令从密码生成散列输出:
$CATALINA_HOME/bin/digest.sh -a "PBKDF2WithHmacSHA512" -i 100000 -s 16 -k 256 -h "org.apache.catalina.realm.SecretKeyCredentialHandler" "YOUR_PASSWORD"
与您select的迭代计数和盐大小(以字节为单位)。 请注意,由于错误60446 ,密钥长度需要与server.xml中定义的相同。 不过应该尽快修复上游。
警告! 请确保您的密码不会保存在shell的命令历史logging中。 在bash中,这是通过在命令前加一个空格来实现的。
该命令将以纯文本forms输出您的密码,并以hexforms显示所产生的凭证,您应该将其用作您的tomcat-users.xml中的密码属性。
CredentialHandler组件的文档可以在这里find。 algorithm属性的可能值可以在这里find。
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.xmlconfiguration为使用基于SHA-256摘要的基于散列的密码:
4)configuration你的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>