คำสั่ง openssl passwd เป็นเครื่องมือที่มีประโยชน์มากสำหรับการสร้าง Hashed Password เพื่อนำไปใช้ในไฟล์กำหนดค่าต่าง ๆ ของระบบ Linux หรือ Web Server เช่น .htpasswd ของ Apache/Nginx หรือใช้ใน /etc/shadow
openssl passwd คืออะไร ?
โดยปกติแล้ว ระบบคอมพิวเตอร์จะไม่เก็บรหัสผ่านเป็นตัวอักษรปกติ ( Plaintext ) แต่จะเก็บในรูปแบบของ Hash ซึ่งเป็นข้อมูลที่ถูกเข้ารหัสทางเดียว ไม่สามารถย้อนกลับมาเป็นรหัสเดิมได้ คำสั่งนี้จึงทำหน้าที่แปลงรหัสผ่านที่เราพิมพ์ ให้กลายเป็นชุดรหัส Hash ตาม Algorithm ที่เราเลือก
วิธีใช้งานพื้นฐาน
รูปแบบคำสั่งเบื้องต้นคือopenssl passwd {options} {password}
การสร้างรหัสผ่านแบบด่วน ( Standard DES )
หากพิมพ์คำสั่งโดยไม่ระบุ Option ระบบจะใช้ Algorithm แบบเก่า ( Standard DES ) ซึ่งไม่แนะนำสำหรับงานที่ต้องการความปลอดภัยสูง
openssl passwd -1 "mypassword"
ตัวเลือกด้าน Algorithm ( Hashing Methods )
ตัวเลือกกลุ่มนี้จะกำหนดว่ารหัสผ่านของคุณจะถูกเข้ารหัสด้วยวิธีไหน
| Option | Algorithm | ความเหมาะสม |
| ( ไม่มี ) | Standard DES | ไม่แนะนำ ( ล้าสมัยและไม่ปลอดภัย ) |
-crypt | Standard DES | เหมือนกับการไม่ใส่อะไรเลย |
-1 | MD5-based | เคยเป็นมาตรฐาน แต่ปัจจุบันถือว่าอ่อนแอต่อการ Brute-force |
-5 | SHA-256 | ปลอดภัยระดับดี ( มาตรฐาน Linux สมัยใหม่ ) |
-6 | SHA-512 | แนะนำที่สุด มีความซับซ้อนและปลอดภัยสูงสุดในปัจจุบัน |
-apr1 | Apache MD5 | ใช้สำหรับไฟล์ .htpasswd ของ Apache หรือ Nginx โดยเฉพาะ |
-aixmd5 | AIX MD5 | ใช้สำหรับระบบปฏิบัติการ AIX |
ตัวเลือกด้านการจัดการ Input / Output
ช่วยให้คุณป้อนรหัสผ่านได้ปลอดภัยขึ้น หรือนำไปใช้ใน Script ได้ง่ายขึ้น
-in [file]: อ่านรหัสผ่านจากไฟล์ที่ระบุ ( แทนการพิมพ์เอง )-stdin: อ่านรหัสผ่านจาก Standard Input ( เช่น การ Pipe ค่ามาจากคำสั่งอื่น )-quiet: ไม่ต้องแสดงข้อความคำเตือนหรือรายละเอียดส่วนเกิน ให้แสดงเฉพาะค่า Hash เท่านั้น-noverify: ไม่ต้องถามให้ยืนยันรหัสผ่านซ้ำ (ปกติถ้าพิมพ์สด ระบบจะให้ยืนยัน 2 รอบ)-reverse: ( ในบางเวอร์ชัน ) ใช้เพื่อสลับการแสดงผล
ตัวเลือกด้านความปลอดภัย ( Salt )
salt [string]: กำหนดค่า Salt ด้วยตัวเอง ( สูงสุด 8-16 ตัวอักษรขึ้นอยู่กับ Algorithm )- Tip: หากไม่กำหนด ระบบจะสุ่ม Salt ให้โดยอัตโนมัติ ซึ่งปลอดภัยกว่าการกำหนดเองแบบซ้ำ ๆ
-rand [file]: ใช้ไฟล์ระบุเพื่อสร้างค่าสุ่ม ( Seed ) สำหรับการ Generate Salt
ตัวอย่างการใช้ตัวเลือกผสมกัน
- ใช้ใน Shell Script ( ปลอดภัยและเร็ว )
หากคุณมี Script ที่ต้องการ Generate รหัสผ่านโดยไม่ต้องคีย์สดecho "mypassword" | openssl passwd -6 -stdin - สร้างรหัสสำหรับ Nginx / Apache Auth
หากต้องการความชัวร์ว่า Web Server จะอ่านออกแน่นอน ให้ใช้-apr1openssl passwd -apr1 -salt "random88" "mypassword"
อ่านเพิ่มเติม