Como uso senhas de texto não-plano para usuários do Tomcat?

19

No Ubuntu 10.04.3 LTS, depois de instalar o Tomcat 6, a maneira de adicionar uma conta de administrador / administrador é adicionar um registro como este para /etc/tomcat6/tomcat-users.xml :

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

Essa senha está em texto simples e não me sinto confortável com isso. Existe uma maneira de usar algo como um hash em vez disso? Se você tem uma solução não Ubuntu, provavelmente posso traduzi-la.

    
por John Whitlock 29.07.2011 / 21:24

3 respostas

14

Extraído de esta página

  1. adicione o atributo "digest" em seu elemento em server.xml com um algoritmo de hash como valor (os valores possíveis são por exemplo md5 , sha-1 ou sha-256 , em que o último é altamente recomendado).
  2. Executar $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. Você receberá uma saída no seguinte formato <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Substituir valor do atributo password do usuário em tomcat-users.xml to <ENCRYPTED_PASSWORD>
  5. reinicie o tomcat

Veja também: Senha de resumo do Tomcat

    
por 29.07.2011 / 21:29
8

Para alguém que esteja procurando informações sobre o Tomcat 8.0.15 ou mais recente, provavelmente você deve usar o SecretKeyCredentialHandler com PBKDF2, já que é muito mais seguro (ou seja, mais difícil de decifrar) do que um simples resumo de mensagens.

Por exemplo, no seu server.xml:

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

Com esta configuração, use o seguinte para gerar a saída em hash da sua senha:

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

com a contagem de iterações e o tamanho de sal (em bytes) de sua escolha. Note que o comprimento da chave precisa ser o mesmo que o definido em server.xml por causa do bug 60446 . Ele deve ser corrigido logo depois.

AVISO! Certifique-se de que sua senha não seja salva no histórico de comandos do seu shell. No bash isto é conseguido precedendo o comando com um espaço vazio.

O comando exibirá sua senha em texto simples e uma representação hexadecimal das credenciais resultantes, que você deve usar como seu atributo de senha em seu tomcat-users.xml.

A documentação do componente CredentialHandler pode ser encontrada aqui . Os valores possíveis para o atributo do algoritmo podem ser encontrados aqui .

    
por 02.12.2016 / 15:56
0

1) Gerar senha: /bin>digest.bat -s 0 -a sha-256

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

A senha a ser usada é: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Nota importante: você deve usar "-s 0" (sal 0) ou não vai funcionar.

2) cole a senha acima em seu arquivo tomcat-users.xml.

Exemplo:

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

3) configure server.xml para usar senhas baseadas em hash de digitação SHA-256:

                   

4) configure seu web.xml para usar as senhas “DIGEST” e atualize o RealmName para corresponder acima (na seção 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>
    
por 15.06.2017 / 18:39