Назад | Перейти на главную страницу

Как мне использовать пароли, отличные от обычного текста, для пользователей Tomcat?

В 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, я, вероятно, смогу его перевести.

Взято из эта страница

  1. добавьте атрибут "дайджест" в свой элемент в server.xml с хеш-алгоритмом в качестве значения (возможные значения, например, md5, sha-1 или sha-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 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>