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(可能な値は、例えば、ある値として、ハッシュアルゴリズムでmd5sha-1またはsha-256後者は強く推奨されています)。
  2. 走る $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. 次の形式で出力が得られます <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. to password内のユーザーの属性の値を置き換えますtomcat-users.xml<ENCRYPTED_PASSWORD>
  5. Tomcatを再起動します

関連項目:Tomcatダイジェストパスワード


1
+1、ただしMD5を参照してください。機能する"sha-1"場合は"sha-256"、またはを使用します。
シェーンマッデン

1
Tomcat 7では、これを行うためにbinディレクトリにdigest.batがあります。例:digest.bat -a "md5" <YOUR_PASSWORD>
ザス

1
これはTomat 8.5.xでは不完全です。完全な手順については、以下のコメントを参照してください。また、server.xmlおよびweb.xml認証方法でレルムを変更する必要があります。
atom88

8

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コンポーネントのドキュメントはこちらにありますここでアルゴリズム属性の可能な値を見つけることができます


0

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>

DIGEST authとハッシュされたパスワードを混同しています。問題は、基本認証でハッシュ化されたパスワードを使用することです。
rustyx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.