การสร้าง Private Key, Public Key ในตอนนี้นิยมใช้กันหลัก ๆ จะมี 3 ตระกูลคือ RSA, ECDSA และ Ed25519
ตระกูล RSA
RSA ใช้หลักการเลขจำนวนเฉพาะขนาดใหญ่ มี Option สำคัญคือ Key Size
- คำสั่งสร้าง Private Key:
openssl genrsa -out private.key 2048 - การดึง Public Key: ใช้ชุดคำสั่ง
openssl rsa - Option ที่ใช้บ่อย
-des3หรือ-aes256: เพื่อใส่ Password ให้กับไฟล์ Key2048 / 4096: ระบุความยาว Bit
ตระกูล ECDSA
ใช้คณิตศาสตร์เส้นโค้งอ้างอิงตาม “Curve” แทนการระบุจำนวน Bit แบบ RSA
- คำสั่งสร้าง Private Key:
openssl ecparam -name prime256v1 -genkey -noout -out ec_private.key - การดึง Public Key: ต้องใช้ชุดคำสั่ง
openssl ecopenssl ec -in ec_private.key -pubout -out ec_public.key - Option ที่ใช้บ่อย
-name: ใช้เลือกชื่อ Curve เช่นprime256v1หรือsecp384r1
ตระกูล Ed25519
เป็นที่นิยมมากใน SSH ยุคใหม่ เพราะปลอดภัยสูงและไฟล์ Key มีขนาดเล็กมาก
- การใช้งาน: ส่วนใหญ่ใช้ผ่าน
ssh-keygenssh-keygen -t ed25519 -C "[email protected]" - ความต่าง: คุณไม่จำเป็นต้องระบุ Bit
ตารางเปรียบเทียบ Option ของ OpenSSL
| Algorithm | คำสั่งจัดการ Key | Option ระบุความแรง | ความนิยมในปัจจุบัน |
| RSA | openssl rsa | จำนวน Bit | สูงมาก |
| ECDSA | openssl ec | ชื่อ Curve | สูง |
| Ed25519 | ssh-keygen | ไม่ต้องระบุ | สูงมากสำหรับ SSH |
ข้อควรระวังเมื่อสลับประเภท Key
หากคุณเปลี่ยนจาก RSA ไปใช้ ECDSA ใน Nginx config
- Directives: คำสั่ง
ssl_certificateและssl_certificate_keyยังใช้เหมือนเดิม - Compatibility: ต้องเช็คว่า Client รองรับ Curve นั้นหรือไม่
- Backup: อย่าลืมนะครับว่าถ้าเปลี่ยนประเภท Key ใหม่ Public Key เดิมจะใช้ไม่ได้ ต้องนำ Public Key ชุดใหม่ไปอัปเดตที่ปลายทางด้วย
อ่านเพิ่มเติม