Làm cách nào để sử dụng mật khẩu không phải văn bản gốc cho người dùng Tomcat?


19

Trên Ubuntu 10.04.3 LTS, sau khi cài đặt Tomcat 6, cách để thêm tài khoản người quản lý / quản trị viên là thêm bản ghi như thế này vào /etc/tomcat6/tomcat-users.xml:

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

Mật khẩu đó ở dạng văn bản gốc và tôi không thoải mái với điều đó. Có cách nào để sử dụng một cái gì đó như băm thay thế? Nếu bạn có một giải pháp không phải Ubuntu, tôi có thể dịch nó.

Câu trả lời:


14

Lấy từ trang này

  1. thêm thuộc tính "digest" vào phần tử của bạn server.xmlbằng thuật toán băm làm giá trị (ví dụ: các giá trị có thể được khuyến nghị md5, sha-1hoặc sha-256trong đó khuyến nghị mạnh mẽ sau).
  2. Chạy $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. Bạn sẽ nhận được một đầu ra ở dạng sau <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Thay thế giá trị của người sử dụng passwordthuộc tính trong bạn tomcat-users.xmlđể<ENCRYPTED_PASSWORD>
  5. khởi động lại tomcat

Xem thêm: Mật khẩu tiêu hóa Tomcat


1
+1, nhưng eek tại MD5. Sử dụng "sha-1"hoặc "sha-256", nếu nó sẽ làm việc.
Shane Madden

1
Trong Tomcat 7 bây giờ có một digest.bat trong thư mục bin để làm điều này. Ví dụ:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz

1
Điều này chưa hoàn thành cho Tomat 8.5.x. Xem bình luận của tôi dưới đây cho các bước đầy đủ. Bạn cũng phải sửa đổi vương quốc của mình trong server.xml cũng như trong phương thức xác thực web.xml.
nguyên tử88

8

Đối với bất kỳ ai đến đây để tìm kiếm thông tin về Tomcat 8.0.15 hoặc mới hơn, có lẽ bạn nên sử dụng SecretKeyCredentialHandler với PBKDF2, vì nó an toàn hơn (nghĩa là khó bẻ khóa hơn) so với thông báo đơn giản.

Ví dụ: trong máy chủ của bạn:

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

Với cấu hình này, sử dụng cách sau để tạo đầu ra băm từ mật khẩu của bạn:

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

với số lần lặp và kích thước muối (tính bằng byte) bạn chọn. Lưu ý rằng độ dài khóa cần phải giống như được xác định trong server.xml vì lỗi 60446 . Nó sẽ được sửa chữa khá sớm ngược dòng mặc dù.

CẢNH BÁO! Vui lòng đảm bảo mật khẩu của bạn không được lưu trong lịch sử lệnh của shell. Trong bash, điều này đạt được bằng cách đặt trước lệnh với một khoảng trống.

Lệnh sẽ xuất mật khẩu của bạn dưới dạng văn bản thuần túy và biểu diễn hex của thông tin đăng nhập kết quả, mà bạn nên sử dụng làm thuộc tính mật khẩu của mình trong tomcat-users.xml.

Tài liệu cho thành phần CredentialHandler có thể được tìm thấy ở đây . Các giá trị có thể cho thuộc tính thuật toán có thể được tìm thấy ở đây .


0

1) Tạo mật khẩu: /bin>digest.bat -s 0 -a sha-256

Ví dụ: /bin>digest.bat -s 0 -a sha-256 quản trị viên

Mật khẩu để sử dụng là: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Lưu ý quan trọng: Bạn phải sử dụng 0-0 0 (muối 0) nếu không nó sẽ không hoạt động.

2) dán mật khẩu ở trên vào tệp tomcat-users.xml của bạn.

Thí dụ:

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

3) định cấu hình server.xml để sử dụng mật khẩu dựa trên hàm băm SHA-256:

4) định cấu hình tệp web.xml của bạn để sử dụng mật khẩu của DIG DIGEST và cập nhật RealmName để khớp ở trên (trong phần 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>

Bạn đang nhầm lẫn DIGEST auth với mật khẩu băm. Câu hỏi là về việc sử dụng mật khẩu băm với auth BASIC.
rustyx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.