- ทำไมจึงควรใช้ HTTPS บนเครื่องโลคัล
- ให้ใกล้เคียงกับสภาพแวดล้อมโปรดักชันมากที่สุด
- ใช้นโยบายความปลอดภัยที่เข้มงวด - Content Security Policy(CSP)
- ใช้งานฟีเจอร์บางอย่างของเบราว์เซอร์ เช่น Service Worker, คุกกี้แบบ Secure/Prefixed เป็นต้น
- ใช้ชื่อโฮสต์เฉพาะแทน localhost
- การใช้ HTTPS บนเครื่องโลคัล
- สร้าง Self-Signed Certificate
→ เครื่องมือที่ดีที่สุดคือ OpenSSL แต่ถ้าต้องการความง่าย แค่ใช้ mkcert ก็เพียงพอ
→ ติดตั้ง local CA ด้วย mkcert -install และสร้างคีย์ด้วย mkcert localhost
- สร้างเซิร์ฟเวอร์ HTTPS ด้วย Node.js โดยใช้คีย์ของ localhost
7 ความคิดเห็น
CFSSL เป็นอย่างไรบ้างครับ? ผมเองก็ใช้แต่ OpenSSL มาตลอดเหมือนกัน แต่เห็นว่าหนังสือที่กำลังอ่านอยู่ช่วงหลัง ๆ แนะนำ CFSSL ไว้ เลยอยากรู้ว่ามีข้อดีข้อเสียหรือความแตกต่างเมื่อเทียบกันอย่างไรบ้าง
https://web.dev/i18n/ko/how-to-use-local-https/ มีบทความแบบนี้ด้วยแฮะ
ดูเหมือนว่าเวลาเทสต์การเชื่อมต่อสมาร์ตโฟนกับเซิร์ฟเวอร์โลคัลจะต้องใช้ HTTPS
แต่ในกรณีการใช้งานของผมมักเป็นเครือข่ายโลคัลที่ไม่มีอินเทอร์เน็ต
เลยไม่สามารถใช้ tunneling แบบ ngrok ได้
วิธีสร้างใบรับรองด้านบนก็ใช้ได้อยู่ แต่จัดการได้ไม่ค่อยสะดวกนัก
มีวิธีอื่นอีกไหมครับ?
หากเครื่องสำหรับพัฒนาเป็นระบบ Windows ให้รันพร็อกซีอย่างเช่น fiddler แล้วตั้งค่าที่อยู่พร็อกซีของ iPhone หรือ Android ให้เป็นที่อยู่สำหรับเชื่อมต่อของ fiddler ก็จะสามารถใช้การตั้งค่าอย่างไฟล์ hosts ของเครื่องพัฒนาได้
(จำเป็นต้องมีขั้นตอนติดตั้งใบรับรองรูทแบบ self-signed ของ fiddler ลงในโทรศัพท์)
คิดว่าน่าจะทำได้ด้วยเครื่องมืออย่าง mitmproxy เช่นกัน
https://th.news.hada.io/topic?id=6151
ผมเคยใช้โซลูชันนี้ครับ มีความสุขมากเลย...
ผมเคยมีปัญหาว่าใช้ ngrok ไม่ได้ในสภาพแวดล้อมโลคัลที่ต่ออินเทอร์เน็ตไม่ได้อยู่แล้ว
แล้วก็มีปัญหาที่ทดสอบได้ไม่เต็มที่เพราะข้อจำกัดด้านแบนด์วิดท์ด้วยครับ ;;;
ข้อมูลเพิ่มเติมคือ บน Windows ก็มีคำสั่ง
New-SelfSignedCertificateใน PowerShell เช่นกัน จึงสามารถสร้างใบรับรองแบบ self-signed ได้โดยไม่ต้องติดตั้งเครื่องมือภายนอกเพิ่มเติม ผมเคยเขียนสคริปต์ PowerShell เพื่อ export ไฟล์ใบรับรองออกมาด้วยวิธีนี้แล้วนำมาใช้อยู่เหมือนกันhttps://www.sysnet.pe.kr/2/0/12588