web-dev-qa-db-ja.com

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ソリューションを持っているなら、私はおそらくそれを翻訳することができます。

19
John Whitlock

このページ から取得

  1. ハッシュアルゴリズムを値としてserver.xmlの要素に「ダイジェスト」属性を追加します(可能な値は、たとえばmd5sha-1またはsha-256で、後者を強くお勧めします) )。
  2. $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>を実行します
  3. 次の形式の出力が得られます<YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Tomcat-users.xmlのユーザーのpassword属性の値を<ENCRYPTED_PASSWORD>に置き換えます
  5. tomcatを再起動します

参照: Tomcatダイジェストパスワード

14
Alex

Tomcat 8.0.15以降の情報を探している方は、単純なメッセージダイジェストよりもはるかに安全(つまり、解読が難しい)であるため、おそらくPBKDF2でSecretKeyCredentialHandlerを使用する必要があります。

たとえば、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"

選択した反復回数とソルトサイズ(バイト単位)を使用します。 バグ60446 のため、キーの長さはserver.xmlで定義されたものと同じである必要があることに注意してください。しかし、すぐに上流で修正されるはずです。

警告!パスワードがシェルのコマンド履歴に保存されないようにしてください。 bashでは、コマンドの前に空白スペースを置くことでこれを実現します。

コマンドは、パスワードをプレーンテキストで出力し、結果の資格情報の16進表記を出力します。これは、Tomcat-users.xmlのパスワード属性として使用する必要があります。

CredentialHandlerコンポーネントのドキュメントは here にあります。アルゴリズム属性の可能な値は、 ここ です。

8
Niklas Holm

1)パスワードを生成します:/bin>digest.bat -s 0 -a sha-256

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

使用するパスワードは次のとおりです:8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

*重要な注意:「-s 0」(salt 0)を使用する必要があります。使用しないと機能しません。

2)上記のパスワードをTomcat-users.xmlファイルに貼り付けます。

例:

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

3)SHA-256ダイジェストハッシュベースのパスワードを使用するようにserver.xmlを構成します。

4)「DIGEST」パスワードを使用するようにweb.xmlを構成し、上記に一致するように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>
0
atom88