Come posso usare password non in chiaro per gli utenti Tomcat?


19

Su Ubuntu 10.04.3 LTS, dopo aver installato Tomcat 6, il modo per aggiungere un account gestore / amministratore è quello di aggiungere un record come questo a /etc/tomcat6/tomcat-users.xml:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>

Quella password è in chiaro e non mi sento a mio agio. C'è un modo per usare qualcosa come un hash invece? Se hai una soluzione non Ubuntu, probabilmente posso tradurla.

Risposte:


14

Tratto da questa pagina

  1. aggiungere l'attributo "digerire" il vostro elemento in server.xmlcon un algoritmo di hash come valore (valori possibili sono per esempio md5, sha-1o sha-256, se quest'ultimo è fortemente raccomandato).
  2. Correre $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. Otterrai un output nel seguente modulo <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Sostituire valore dell'utente passwordattributo nel tuo tomcat-users.xmla<ENCRYPTED_PASSWORD>
  5. riavvia tomcat

Vedi anche: password digest Tomcat


1
+1, ma eek all'MD5. Usa "sha-1"o "sha-256", se funzionerà.
Shane Madden

1
In Tomcat 7 ora è presente un digest.bat nella directory bin per farlo. Esempio:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz,

1
Questo è incompleto per Tomat 8.5.x. Vedi il mio commento qui sotto per i passaggi completi. È inoltre necessario modificare il proprio realm nel server.xml e nel metodo di autenticazione web.xml.
atom88,

8

Per chiunque venga qui alla ricerca di informazioni su Tomcat 8.0.15 o versioni successive, è consigliabile utilizzare SecretKeyCredentialHandler con PBKDF2, poiché è molto più sicuro (ovvero più difficile da decifrare) di un semplice digest di messaggi.

Ad esempio, nel tuo server.xml:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
       resourceName="UserDatabase">
   <CredentialHandler className="org.apache.catalina.realm.SecretKeyCredentialHandler"
                      algorithm="PBKDF2WithHmacSHA512"
                      keyLength="256"
   />
</Realm>

Con questa configurazione, utilizzare quanto segue per generare l'output con hash dalla password:

 $CATALINA_HOME/bin/digest.sh -a "PBKDF2WithHmacSHA512" -i 100000 -s 16 -k 256 -h "org.apache.catalina.realm.SecretKeyCredentialHandler" "YOUR_PASSWORD"

con il conteggio delle iterazioni e la dimensione del sale (in byte) di tua scelta. Si noti che la lunghezza della chiave deve essere la stessa definita in server.xml a causa del bug 60446 . Dovrebbe essere riparato abbastanza presto a monte però.

AVVERTIMENTO! Assicurarsi che la password non venga salvata nella cronologia dei comandi della shell. In bash questo si ottiene precedendo il comando con uno spazio vuoto.

Il comando genererà la tua password in testo semplice e una rappresentazione esadecimale delle credenziali risultanti, che dovresti usare come attributo della password in tomcat-users.xml.

La documentazione per il componente CredentialHandler è disponibile qui . I possibili valori per l'attributo dell'algoritmo sono disponibili qui .


0

1) Genera password: /bin>digest.bat -s 0 -a sha-256

Esempio: /bin>digest.bat -s 0 -a sha-256 admin

La password da utilizzare è: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Nota importante: è necessario utilizzare "-s 0" (salt 0) o non funzionerà.

2) incolla la password sopra nel tuo file tomcat-users.xml.

Esempio:

<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>

3) configura server.xml per usare password basate su hash digest SHA-256:

4) configura il tuo web.xml per usare le password “DIGEST” e aggiorna RealmName in modo che corrisponda sopra (nella sezione 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>

Stai confondendo l'autenticazione DIGEST con password con hash. La domanda riguarda l'uso di password con hash con autenticazione BASIC.
Rustyx,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.