Как я могу использовать незашифрованные пароли для пользователей Tomcat?

19

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

Джон Уитлок
источник

Ответы:

14

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

  1. добавить атрибут «digest» для вашего элемента 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

Alex
источник
1
+1, но ик на MD5. Используйте "sha-1"или "sha-256", если это будет работать.
Шейн Мэдден
1
В Tomcat 7 теперь для этого есть каталог digest.bat в каталоге bin. Пример:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz
1
Это не завершено для Tomat 8.5.x. Смотрите мой комментарий ниже для полных шагов. Вы также должны изменить свою область в server.xml, а также в методе аутентификации web.xml.
atom88
8

Для тех, кто приходит сюда в поисках информации о 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 можно найти здесь . Возможные значения для атрибута алгоритма можно найти здесь .

Никлас Холм
источник
0

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>
atom88
источник
Вы путаете DIGEST-аутентификацию с хешированными паролями. Вопрос об использовании хешированных паролей с BASIC-аутентификацией.
rustyx