В Ubuntu 10.04.3 LTS после установки Tomcat 6 можно добавить учетную запись менеджера / администратора, добавив такую запись в /etc/tomcat6/tomcat-users.xml
:
<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>
Этот пароль в открытом виде, и мне это не нравится. Есть ли способ использовать вместо этого что-то вроде хеша? Если у вас есть решение, отличное от Ubuntu, я, вероятно, смогу его перевести.
Взято из эта страница
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
Тем, кто приходит сюда в поисках информации о 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"
с количеством итераций и размером соли (в байтах) по вашему выбору. Обратите внимание, что длина ключа должна быть такой же, как определено в server.xml из-за ошибка 60446. Однако это должно быть исправлено довольно скоро в апстриме.
ПРЕДУПРЕЖДЕНИЕ! Убедитесь, что ваш пароль не сохраняется в истории команд вашей оболочки. В bash это достигается за счет ввода перед командой пустого места.
Команда выведет ваш пароль в виде обычного текста и шестнадцатеричное представление полученных учетных данных, которые вы должны использовать в качестве атрибута пароля в файле tomcat-users.xml.
Документацию по компоненту CredentialHandler можно найти Вот. Возможные значения атрибута алгоритма можно найти Вот.
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>