การสร้าง Public Key ขึ้นมาใหม่จาก Private Key ที่เรามีอยู่แล้ว เป็นเรื่องที่ทำได้ปกติ ( และเป็นหัวใจของระบบ Asymmetric Encryption เลย ) เพราะโดยทางคณิตศาสตร์แล้ว Public Key ถูกคำนวณออกมาจาก Private Key ครับ
วิธีการสร้าง Public Key จาก Private Key ( RSA )
ส่วนใหญ่ในระบบ Linux หรือ Web Server เราจะใช้เครื่องมือที่ชื่อว่า OpenSSL ครับ
- กรณีเป็น Standard SSH Key
หากคุณมี Private Key ( เช่นไฟล์id_rsa) และต้องการสร้างไฟล์.pubกลับคืนมา ให้ใช้คำสั่งนี้ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub-y: อ่านไฟล์ Private Key และพ่น Public Key ออกมา-f: ระบุไฟล์ Private Key ต้นทาง
- กรณีเป็น SSL/TLS Key ( สำหรับ Nginx หรือ HTTPS )
หากคุณมีไฟล์ Private Key ของใบรับรอง SSL ( เช่นserver.key) และต้องการดึง Public Key ออกมาดูหรือเซฟเก็บไว้openssl rsa -in server.key -pubout -out server_public.key-in: ไฟล์ Private Key ของคุณ-pubout: คำสั่งให้ Output ออกมาเป็น Public Key-out: ชื่อไฟล์ Public Key ที่ต้องการสร้าง
ตารางสรุปความแตกต่าง
| ประเภท Key | เครื่องมือที่ใช้ | ไฟล์ที่ได้ | การนำไปใช้ |
| SSH Key | ssh-keygen | .pub | ใช้สำหรับ Login เข้า Server ( Authorized_keys ) |
| SSL Key | openssl | .key / .pem | ใช้สำหรับเข้ารหัสการรับส่งข้อมูลบนหน้าเว็บ ( HTTPS ) |
⚠️ ข้อควรระวัง ( Security First )
- ห้ามแชร์ Private Key: คุณสามารถส่ง Public Key ให้ใครก็ได้ แต่ Private Key ต้องถูกเก็บเป็นความลับที่สุด
- สิทธิ์การเข้าถึง ( Permissions ): ในระบบ Linux ไฟล์ Private Key ควรมี permission เป็น
600( Owner อ่าน / เขียนได้คนเดียว )chmod 600 your_private.key - การตรวจสอบความถูกต้อง: หากคุณอยากรู้ว่า Public Key นี้คู่กับ Private Key จริงไหม ( เช่น ก่อนเอาไป config ใน Nginx ) คุณสามารถเช็คค่า Modulus ให้ตรงกันได้
วิธีเช็คว่า Key ตรงกันหรือไม่ ( Modulus Check )
- เช็ค Private Key
openssl rsa -noout -modulus -in server.key | openssl md5 - เช็ค Public Key
openssl rsa -noout -modulus -pubin -in server_public.key | openssl md5
หากค่า MD5 Hash ที่ได้ออกมา “ตรงกัน” แสดงว่าเป็นคู่กันแน่นอนครับ
อ่านเพิ่มเติม
