Tomcat
如何為 Tomcat 使用者使用非明文密碼?
在 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"/>
該密碼是明文的,我對此感到不舒服。有沒有辦法改用雜湊之類的東西?如果你有一個非 Ubuntu 的解決方案,我可能會翻譯它。
取自此頁面
- 在您的元素上添加“digest”屬性,
server.xml
並使用雜湊算法作為值(可能的值例如md5
,sha-1
或sha-256
,強烈推薦後者)。- 跑
$CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
- 您將獲得以下形式的輸出
<YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
- 在您的to中替換使用者
password
屬性的值tomcat-users.xml``<ENCRYPTED_PASSWORD>
- 重啟tomcat
另請參閱: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>
使用此配置,使用以下命令從您的密碼生成散列輸出:
$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 中的密碼屬性。