Як я можу використовувати паролі без простого тексту для користувачів 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. додайте атрибут "дайджест" на своєму елементі 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.xmlTo<ENCRYPTED_PASSWORD>
  5. перезапустити tomcat

Дивіться також: Пароль дайвіста Tomcat


1
+1, але у MD5 еквівалент. Використовуйте "sha-1"або "sha-256", якщо це спрацює.
Шейн Мадден

1
У Tomcat 7 зараз є digest.bat у каталозі bin для цього. Приклад:digest.bat -a "md5" <YOUR_PASSWORD>
Заш

1
Це є неповним для Tomat 8.5.x. Дивіться мій коментар нижче для повних кроків. Ви також повинні змінити своє царство як у server.xml, так і в методі аутентифікації web.xml.
atom88

8

Для тих, хто приходить сюди, шукаючи інформацію про Tomcat 8.0.15 або новішої версії, вам, мабуть, слід скористатись SecretKeyCredentialHandler разом із PBKDF2, оскільки це набагато безпечніше (тобто важче зламати), ніж простий дайджест повідомлень.

Наприклад, у вашому сервері.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 адмін

Пароль для використання: 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>

Ви плутаєте DIGEST auth з хешованими паролями. Питання полягає у використанні хешованих паролів з автентичністю BASIC.
rustyx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.