@ratanon
1 year ago - 2023-08-29 08:01:54
HTTPS SSL Handshake
HTTPS คือ ระบบป้องกันการสื่อสารทางอินเทอร์เน็ต ทำให้การส่งข้อมูลระหว่างคอมพิวเตอร์ของคุณกับเซิร์ฟเวอร์ที่คุณเชื่อมต่อนั้นเป็นความลับและปลอดภัย SSL หรือ Secure Sockets Layer คือ หนึ่งในโปรโตคอลที่ใช้ในการป้องกัน ในการสร้างการเชื่อมต่อที่ปลอดภัยนั้น เราจำเป็นต้องใช้การ 'Handshake' หรือการส่งสัญญาณเพื่อแจ้งให้ทั้งสองฝ่ายรู้ว่าพร้อมทำการสื่อสารกันแล้ว
ซึ่งจะมีขั้นตอนดังนี้
- ClientHello: คอมพิวเตอร์ของคุณ (Client) จะเริ่มต้นด้วยการส่งข้อความที่ระบุว่ามันต้องการสร้างการเชื่อมต่อที่ปลอดภัย และให้ข้อมูลบางประการที่เซิร์ฟเวอร์ต้องการ เช่น รุ่นของ SSL/TLS, รายการของ algorithms ที่ client รองรับ, และข้อมูลสุ่มบางอย่าง
- ServerHello: เซิร์ฟเวอร์จะตอบกลับด้วยข้อมูลที่ client ต้องการ เช่น algorithm ที่เซิร์ฟเวอร์เลือกจากรายการที่ client ส่งมา, และข้อมูลสุ่มเพิ่มเติม
- การส่ง Certificate: เซิร์ฟเวอร์จะส่ง digital certificate ของมันมาให้ client ซึ่งเป็นหลักฐานว่าเซิร์ฟเวอร์นี้เป็นจริง และได้รับการรับรองจาก Certificate Authority (CA) ที่เชื่อถือได้
- การตรวจสอบ Certificate: Client ตรวจสอบ certificate ที่ได้รับ และยืนยันว่าเชื่อถือ Certificate Authority (CA) ที่ให้ certificate นั้น
- การสร้าง Pre-Master Secret: Client สร้าง "Pre-Master Secret", ซึ่งเป็นคีย์สำคัญที่จะถูกใช้ในการสร้าง "Master Secret" ซึ่งเป็นคีย์ที่จะใช้ในการเข้ารหัสข้อมูลที่ถูกส่งไปมาระหว่าง client และเซิร์ฟเวอร์ นอกจากนี้ client จะเข้ารหัส Pre-Master Secret ด้วย public key ของเซิร์ฟเวอร์ แล้วส่งกลับไปยังเซิร์ฟเวอร์
- การสร้าง Master Secret และ Session Keys: ทั้ง client และเซิร์ฟเวอร์ใช้ Pre-Master Secret ที่ได้รับ เพื่อสร้าง Master Secret และ Session Keys ซึ่งจะใช้ในการเข้ารหัสข้อมูลที่จะถูกส่งไปมาระหว่าง client และเซิร์ฟเวอร์
- การยืนยันการเชื่อมต่อ: ทั้ง client และเซิร์ฟเวอร์ส่งข้อความหากันเพื่อยืนยันว่าทั้งสองฝ่ายพร้อมสำหรับการสื่อสารที่เข้ารหัสแล้ว
เมื่อขั้นตอนนี้เสร็จสิ้นแล้ว, ทั้ง client และเซิร์ฟเวอร์จะใช้ Session Keys ที่ได้สร้างขึ้นในการเข้ารหัสข้อมูลที่จะถูกส่งไปมาระหว่างทั้งสองฝ่าย
เปรียบเทียบง่ายๆ, การสร้างการเชื่อมต่อ HTTPS นี้เหมือนกับการสร้างความไว้วางใจในธุรกิจ: คุณต้องการยืนยันตัวตนของคุณ (ให้ certificate), ตกลงกับวิธีการทำงาน (เลือก algorithms), และสร้างความไว้วางใจ (การสร้างและแชร์ keys) ก่อนที่จะเริ่มการทำงานหรือการสื่อสารกัน