ฉันจะใช้รหัสผ่านที่ไม่ใช่ข้อความธรรมดาสำหรับผู้ใช้ Tomcat ได้อย่างไร


19

บน Ubuntu 10.04.3 LTS หลังจากติดตั้ง Tomcat 6 วิธีการเพิ่มบัญชี manager / admin คือการเพิ่มเรคคอร์ดเช่นนี้/etc/tomcat6/tomcat-users.xml:

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

รหัสผ่านนั้นเป็นข้อความธรรมดาและฉันไม่สะดวกกับมัน มีวิธีใช้บางอย่างเช่นแฮชแทนหรือไม่ หากคุณมีโซลูชันที่ไม่ใช่อูบุนตูฉันอาจแปลได้

คำตอบ:


14

นำมาจากหน้านี้

  1. เพิ่ม "แยกแยะ" แอตทริบิวต์ในองค์ประกอบของคุณserver.xmlด้วยวิธีกัญชาเป็นค่า (ค่าที่เป็นไปได้เช่นmd5, sha-1หรือsha-256ที่หลังขอแนะนำ)
  2. วิ่ง $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. คุณจะได้รับผลลัพธ์ในแบบฟอร์มต่อไปนี้ <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. แทนที่ค่าของpasswordแอตทริบิวต์ของผู้ใช้ในของคุณtomcat-users.xmlเป็น<ENCRYPTED_PASSWORD>
  5. รีสตาร์ท Tomcat

ดูเพิ่มเติม: รหัสผ่านย่อยของ Tomcat


1
+1 แต่ก็น่าสนใจที่ MD5 ใช้"sha-1"หรือ"sha-256"ถ้ามันจะทำงาน
เชนแมดเดน

1
ใน Tomcat 7 ขณะนี้มี digest.bat ในไดเรกทอรี bin เพื่อทำสิ่งนี้ ตัวอย่าง:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz

1
สิ่งนี้ไม่สมบูรณ์สำหรับ Tomat 8.5.x ดูความคิดเห็นของฉันด้านล่างสำหรับขั้นตอนเต็ม คุณต้องแก้ไขอาณาจักรของคุณใน server.xml เช่นเดียวกับในวิธีการรับรองความถูกต้องของ web.xml
atom88

8

สำหรับผู้ที่มาที่นี่เพื่อค้นหาข้อมูลเกี่ยวกับ Tomcat 8.0.15 หรือใหม่กว่าคุณควรใช้ SecretKeyCredentialHandler กับ PBKDF2 แทนเนื่องจากมีความปลอดภัยมากกว่า

ตัวอย่างเช่นใน 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"

ด้วยการนับซ้ำและขนาดเกลือ (เป็นไบต์) ที่คุณเลือก โปรดทราบว่าจำเป็นที่จะต้องมีความยาวกุญแจสำคัญที่จะเป็นเช่นเดียวกับที่กำหนดไว้ใน server.xml เนื่องจากข้อผิดพลาด 60446 มันควรจะได้รับการแก้ไขในไม่ช้าต้นน้ำ

คำเตือน! โปรดตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณไม่ได้รับการบันทึกในประวัติคำสั่งเชลล์ของคุณ ใน bash สามารถทำได้โดยนำหน้าคำสั่งด้วยช่องว่าง

คำสั่งจะส่งออกรหัสผ่านของคุณในรูปแบบข้อความล้วนและการแสดงเลขฐานสิบหกของข้อมูลรับรองที่ได้ซึ่งคุณควรใช้เป็นแอตทริบิวต์รหัสผ่านของคุณใน 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“ (เกลือ 0) มิฉะนั้นจะใช้ไม่ได้

2) วางรหัสผ่านด้านบนลงในไฟล์ tomcat-users.xml ของคุณ

ตัวอย่าง:

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

3) กำหนดค่า server.xml เพื่อใช้รหัสผ่านที่แฮชย่อยของ SHA-256:

4) กำหนดค่า web.xml ของคุณเพื่อใช้รหัสผ่าน“ DIGEST” และอัปเดต 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.