ตัวสร้าง Certificate SSL/TLS: Self-Signed Cert สำหรับ Local HTTPS Development
เรียนรู้วิธีสร้าง self-signed SSL/TLS certificate (RSA & ECDSA) สำหรับการพัฒนาและทดสอบในเครื่อง ด้วยเครื่องมือ Certificate Generator ที่ทำงานใน browser ฟรี
Table of Contents
ตัวสร้าง Certificate SSL/TLS: Self-Signed Cert สำหรับ Local HTTPS Development
การพัฒนาเว็บแอปพลิเคชันในยุคปัจจุบันแทบจะหลีกเลี่ยงไม่ได้ที่จะต้องเรียกใช้ HTTPS ไม่ว่าจะเป็นการทดสอบ Secure Cookies, Service Worker, Web Crypto API หรือการเชื่อมต่อกับ API ของบริษัทที่บังคับให้เรียกผ่าน HTTPS เท่านั้น แต่การขอ Let's Encrypt certificate สำหรับ domain ภายในหรือ localhost มักจะยุ่งยากและเสียเวลา ทางออกที่ง่ายและรวดเร็วที่สุดคือการสร้าง self-signed SSL/TLS certificate ขึ้นมาใช้เอง
สำหรับนักพัฒนาที่กำลังมองหาเครื่องมือที่ใช้งานง่าย ไม่ต้องติดตั้ง OpenSSL บนเครื่อง หรือจำคำสั่งยาว ๆ ไม่ได้ เราขอแนะนำ Certificate Generator ที่สามารถสร้าง certificate แบบ self-signed ได้ทั้ง RSA และ ECDSA พร้อมรองรับ SAN (Subject Alternative Name) ครบครัน โดยทำงานบน browser แทบจะทันที
ในบทความนี้เราจะพาคุณรู้จักกับฟีเจอร์ของเครื่องมือ วิธีการใช้งาน เปรียบเทียบระหว่าง RSA กับ ECDSA ว่าควรเลือกแบบไหน พร้อม best practices และ use cases ในชีวิตจริงของนักพัฒนา เพื่อให้คุณใช้งานเครื่องมือนี้ได้อย่างเต็มประสิทธิภาพ
ทำไมต้องใช้ Certificate Generator?
- ทำงานทั้งหมดใน browser — เป็นส่วนตัว 100%: การสร้าง private key และ certificate ทำขึ้นฝั่ง client ด้วย Web Crypto API ไม่มีการส่งข้อมูลสำคัญขึ้น server แม้แต่บิตเดียว คุณจึงมั่นใจได้ว่า key ของคุณไม่รั่วไหล
- รองรับทั้ง RSA และ ECDSA: หมดปัญหาเรื่องการต้องเลือกเครื่องมือต่าง ๆ สำหรับ algorithm ต่างกัน เพราะตัวสร้างรองรับ RSA (2048/3072/4096 bits) และ ECDSA (P-256/P-384/P-521 curves) ในที่เดียว
- SAN (Subject Alternative Name) support: เพิ่มหลาย domain หรือ hostname ลงใน certificate อันเดียวได้ เช่น localhost, app.local, api.internal โดยไม่ต้องสร้าง cert หลายใบ
- ไม่ต้องติดตั้งอะไรเลย: เปิด browser ขึ้นมาก็ใช้ได้เลย ไม่ต้องลง OpenSSL, mkcert, หรือเครื่องมือ command-line ใด ๆ เหมาะสำหรับเครื่องที่มีข้อจำกัดด้านการติดตั้งโปรแกรม
- Download ไฟล์พร้อมใช้งาน: หลัง generate เสร็จ สามารถดาวน์โหลดเป็นไฟล์ .key (private key), .crt (certificate) และ -public.key (public key) แยกกัน พร้อมก๊อปปี้เนื้อหา PEM ไปใช้กับ clipboard ได้ทันที
- ฟรี ไม่จำกัดจำนวนครั้ง: ใช้งานได้ฟรีทั้งชีวิต สร้างกี่ใบก็ได้ไม่มี rate limit ไม่ต้องสมัครสมาชิก
ฟีเจอร์หลัก
| ฟีเจอร์ | รายละเอียด |
|---|---|
| Key Algorithms | RSA (classic) และ ECDSA (modern, key ขนาดเล็กกว่า) |
| Key Sizes | RSA: 2048 / 3072 / 4096 bits · ECDSA: P-256 / P-384 / P-521 curves |
| Validity Period | ตั้งได้ตามต้องการ สูงสุด 825 วัน (ตาม browser limit) · default 365 วัน |
| Subject Fields | Common Name, Organization, OU, Country, State, Locality, Email |
| SAN Support | เพิ่ม Subject Alternative Names ได้หลาย domain |
| Output Format | PEM format — private key, public key, certificate, และ CSR ที่เป็น optional |
- Country dropdown: เลือกรหัสประเทศจาก dropdown ที่มีให้ล่วงหน้า เช่น US, GB, TH, JP, SG, MY ฯลฯ ไม่ต้องพิมพ์เอง
- Default commonName เป็น localhost: พร้อมใช้งานกับ local development ทันทีโดยไม่ต้องแก้ แต่สามารถเปลี่ยนเป็น domain อื่นได้
- Copy to clipboard: ก๊อปปี้เนื้อหา private key, certificate, หรือ CSR ในรูปแบบ PEM ไปใช้กับงานต่าง ๆ เช่น nginx, Node.js, Docker ได้ทันที
วิธีใช้งาน Certificate Generator
- กรอกข้อมูล Subject: ระบุ Common Name (เช่น localhost หรือ app.local), Organization, Organizational Unit, Country, State, Locality และ Email ตามต้องการ ส่วนใหญ่ใส่แค่ Common Name ก็เพียงพอสำหรับการทดสอบ
- เลือก Key Algorithm และ Key Size: หากต้องการความเข้ากันได้สูงสุดให้เลือก RSA 2048 หากต้องการ performance ที่ดีกว่าและ key ที่เล็กกว่าให้เลือก ECDSA P-256
- ตั้งค่า Validity: ระบุจำนวนวันที่ต้องการให้ certificate มีอายุ (default 365 วัน, สูงสุด 825 วันตาม browser limit)
- เพิ่ม SAN Domains (optional): หากต้องการให้ cert รองรับหลาย hostname ให้ติ๊กเปิด SAN แล้วเพิ่ม domain ต่าง ๆ เช่น localhost, 127.0.0.1, app.local
- กด Generate และ Download: รอสักครู่ browser จะสร้าง keypair และ certificate ให้ จากนั้นดาวน์โหลดไฟล์ .key, .crt, -public.key หรือก๊อปปี้ PEM content ไปใช้งานได้ทันที
RSA vs ECDSA: เลือก Key Algorithm แบบไหนดี?
การเลือกระหว่าง RSA และ ECDSA ขึ้นอยู่กับ use case และ environment ของคุณ มาดูความแตกต่างกันคร่าว ๆ กัน
RSA (Rivest–Shamir–Adleman)
RSA เป็น algorithm คลาสสิกที่ใช้กันมานานกว่า 40 ปี เข้ากันได้กับระบบเก่าและใหม่แทบทุกตัว
- Key sizes: 2048 bits (มาตรฐานปัจจุบัน), 3072 bits (เหมาะสำหรับระยะยาว), 4096 bits (paranoid level)
- Performance: handshake ช้ากว่า ECDSA เล็กน้อย เนื่องจาก key ใหญ่และการคำนวณที่ซับซ้อนกว่า
- Compatibility: ดีเยี่ยม — รองรับโดยทุก browser, ทุก OS, ทุก library แม้แต่ของเก่า ๆ
- เหมาะเมื่อ: ต้องการความเข้ากันได้สูงสุด, ระบบ legacy, หรือไม่แน่ใจว่า environment รองรับ ECDSA หรือไม่
ECDSA (Elliptic Curve Digital Signature Algorithm)
ECDSA ใช้หลักการของ elliptic curve cryptography ที่ให้ความปลอดภัยเทียบเท่า RSA แต่ด้วย key ที่เล็กกว่ามาก
- Curves: P-256 (เทียบเท่า RSA 3072), P-384 (เทียบเท่า RSA 7680), P-521 (เทียบเท่า RSA 15360)
- Performance: เร็วกว่า RSA อย่างเห็นได้ชัด ทั้งในการ generate key, sign และ verify
- Key size: เล็กกว่ามาก (P-256 public key ยาวเพียง ~64 bytes เทียบกับ RSA 2048 ที่ยาว ~256 bytes) ทำให้ TLS handshake เล็กลงและเร็วขึ้น
- Compatibility: ดีมากในปัจจุบัน แต่อาจมีปัญหากับ client หรือ library ที่เก่ามาก ๆ
- เหมาะเมื่อ: ต้องการ performance, ใช้กับ mobile/IoT device ที่มีทรัพยากรจำกัด, หรือเน้น modern stack
คำแนะนำสั้น ๆ: สำหรับ local development ทั่วไปให้เลือก ECDSA P-256 เพราะเร็วและเพียงพอ หากต้องทดสอบกับ client ที่เก่าให้เลือก RSA 2048 เพื่อความเข้ากันได้สูงสุด
Use Cases ในการใช้งานจริง
Local HTTPS Development (localhost)
สถานการณ์คลาสสิกที่นักพัฒนาต้องการ HTTPS บนเครื่องตัวเอง เช่น การทดสอบ Service Worker, Geolocation API, หรือ Secure Cookies ที่ browser บังคับว่าต้องเรียกผ่าน HTTPS เท่านั้น การสร้าง cert สำหรับ localhost ที่มี SAN รวม 127.0.0.1 จะช่วยให้คุณทดสอบได้ทั้งบน domain และ IP
ตัวอย่างการใช้กับ Node.js/Express:
node --tls-cert ./localhost.crt --tls-key ./localhost.key server.js
หรือกับ Vite (React/Vue) เพียงเพิ่ม server: { https: true } ใน config แล้วชี้ไปยัง cert ที่สร้างขึ้น
Internal / Intranet Services
สำหรับบริษัทที่มี internal services วิ่งผ่าน private network เช่น Grafana, Jenkins, internal dashboards ที่เข้าถึงผ่าน .internal หรือ private IP การขอ public CA cert มักไม่ได้เพราะ domain ไม่สามารถ verify ได้ การใช้ self-signed cert จึงเป็นทางออกที่ใช้งานได้จริง — เพียงเพิ่ม root CA ของคุณเข้าไปใน trust store ของเครื่องในองค์กร
Testing API Integrations
เวลาทดสอบ webhook จากบริการภายนอก (เช่น Stripe, GitHub, Slack) ที่ส่ง callback มายัง local server ของคุณ บางครั้งบริการเหล่านั้นบังคับ HTTPS การสร้าง self-signed cert แล้วใช้กับ ngrok หรือ localtunnel จะช่วยให้ webhook ทำงานได้ราบรื่น
CI/CD & Automated Testing
ใน pipeline ที่มีการรัน integration test ที่ต้องการ HTTPS endpoint การสร้าง cert แบบ on-the-fly ผ่าน script แล้วนำไปใช้ใน ephemeral environment จะทำให้ test มีความสมจริงและครอบคลุมมากขึ้น โดยไม่ต้อง hard-code cert ค้างไว้ใน repository
Best Practices
- อย่าใช้ self-signed cert ใน production ที่เข้าถึงได้จาก public: browser จะแสดง warning และ user อาจไม่ไว้ใจ ใช้ Let's Encrypt หรือ CA สาธารณะแทน จดจำไว้ว่า self-signed = สำหรับ dev/test เท่านั้น
- เก็บ private key ให้ปลอดภัย: ห้าม commit private key เข้า Git เด็ดขาด ใช้ .gitignore หรือ environment secret manager จัดการ key แยกห่างจาก code
- Rotate certificate เป็นระยะ: แม้เป็น cert สำหรับ testing ก็ควรสร้างใหม่ทุก ๆ 3–6 เดือน เพื่อฝึกนิสัยและลดความเสี่ยงหาก key รั่ว
- ใช้ SAN สำหรับหลาย domain แทนการสร้างหลาย cert: ตั้งแต่ปี 2017 browser สมัยใหม่ไม่สนใจ Common Name แล้ว แต่อ่านค่าจาก SAN เท่านั้น ดังนั้นให้ใส่ทุก domain ที่ต้องการใน SAN field
- เลือก ECDSA เพื่อ performance: หาก environment รองรับและต้องการ latency ต่ำ เช่น mobile-first app หรือ IoT gateway
- ระวัง browser limit 825 วัน: browser สมัยใหม่จะปฏิเสธ cert ที่อายุเกิน 825 วัน (Apple และ Chrome บังคับเข้มงวด) ตัวสร้างจึงจำกัดสูงสุดไว้ที่ 825 วันให้อัตโนมัติ
เริ่มสร้าง Certificate ที่ปลอดภัย
พร้อมจะสร้าง self-signed SSL/TLS certificate ของคุณเองหรือยัง? ไปที่ Certificate Generator เลือก algorithm ที่เหมาะสม กรอกข้อมูล แล้วกด generate — คุณจะได้ certificate พร้อม private key มาใช้งานในเครื่องของคุณภายในเวลาไม่ถึงนาที ทั้งหมดทำงานใน browser ของคุณเอง ไม่มีการส่งข้อมูลขึ้น server ปลอดภัยเป็นส่วนตัว 100%
ไม่ว่าคุณจะทำ local development, ทดสอบ webhook, หรือตั้ง internal services เครื่องมือนี้จะช่วยให้คุณมี HTTPS พร้อมใช้งานโดยไม่ต้องวุ่นวายกับ command-line tools อีกต่อไป ลองใช้ดูวันนี้แล้วจะรู้ว่าง่ายกว่าที่คิด!
Related Tools ที่คุณอาจชอบ
- SSL Certificate Checker — ตรวจสอบรายละเอียดและความถูกต้องของ SSL/TLS certificate ของเว็บไซต์ใด ๆ
- JWT Generator — สร้าง JSON Web Token สำหรับทดสอบ authentication ในระบบของคุณ
- Password Generator — สร้างรหัสผ่านที่แข็งแกร่งและปลอดภัยสำหรับบัญชีและบริการต่าง ๆ
โค้ดอย่างปลอดภัยและมีความสุข!