สวัสดีครับ บทความนี้เป็นเรื่องการทํางานของ https หรือ ssl ซึ่งปัจจุบันเราก็คุ้นเคยกันดีอยู่แล้วเวลาเราใช้งาน Internet ตรง Url บางเว็บเป็น http:// บางเว็บก็จะเป็น https:// นี่แหละครับที่เราจะพูกถึงกัน
http:// กับ https:// ต่างกันอย่างไร
พูดแบบง่ายๆ แบบบ้านๆ ก็คือ ทุกอย่างเหมือนๆกันแต่จะต่างกันตรงที่ https:// จะมีกระบวนการบางอย่างที่ทําให้การสื่อสารกันระหว่าง server กับ Web browser มีความปลอดภัยมากขึ้น โดยเราจะเรียกมันว่า ssl (Secure Socket Layer) เป็นการเข้ารหัสข้อมูลที่สื่อสารกัน ก่อนที่จะเข้าใจการทํางานของ HTTP, SSL ต้องทำความรู้จักกับการเข้ารหัสแบบ Private Key/Public key กันก่อนครับ
การเข้ารหัสแบบ Private Key/ Public key
การเข้ารหัสแบบ Private Key/Public key คือ เมื่อข้อมูลใดๆถูกเข้ารหัสด้วย Public key จะสามารถถอดรหัสได้ด้วย Private key ที่ถูกสร้างมาคู่กันเท่านั้น และใช้ Public key ที่เข้ารหัสมาถอดรหัสกลับก็ไม่ได้
HTTPS, SSL ทํางานอย่างไร
การทํางานของ SSL จะมีผู้ที่เกี่ยวข้องอยู่ 3 ฝ่าย คือ
- Web server เจ้าของของเว็บไซต์ต่างๆ
- บริษัทที่ออก Certificate หรือ Certificate Authorities ซึ่งต่อไปจะเรียกว่า CA
- User ผู้ใช้งานเว็บไซต์ หรือ Web browser
การทํางานเริ่มต้นจากเมื่อเจ้าของเว็บไซต์ต้องการจะทําเว็บของตัวเองให้มีความปลอดภัยมากขึ้น และทําให้เว็บมีความน่าเชื่อถือ จะดําเนินการตังต่อไปนี้
- ผู้ให้บริการ ทำการสร้าง Public key ของตัวเองขึ้นมาบน Web Server แล้วจะได้ข้อมูล Private Key และรายละเอียดต่างๆ เรียกว่า Certificate Signing Request (CSR)
- ผู้ให้บริการ ส่ง Public Key ที่สร้างขึ้นมาให้กับ CA และ CA ตรวจสอบว่าผู้ให้บริการเป็นเจ้าของ web จริง แล้ว เมื่อถุกอย่างถูกต้อง CA ออกใบรับรองให้ โดยเนื้อหาประกอบด้วย ข้อมูลของผู้ให้บริการ, Public key ที่ส่งมา, และรับรองด้วย digital signature ของ CA (เข้ารหัสด้วย Private Key ของ CA เอง)
- CA ส่ง digital signature ที่สร้างขึ้นกลับไปให้กับผู้ให้บริการ
- ผู้ให้บริการ ทำการติดตั้ง digital signature ที่ได้จาก CA ลงบน Web Server (จะต้องเป็นเครื่องเดียวกับที่สร้าง CSR)
เมื่อ Web server ติดตั้ง Certificate (digital signature) เรียบร้อยแล้ว และสามารถใช้โปรโตคอล HTTPS (HTTP over SSL) ได้แล้ว เมื่อ User เปิดหน้าเว็บ https://abc.com จะมีขั้นตอนดังนี้
- Browser จะส่ง request ไปที่ https://abc.com
- Server ส่ง certificate กลับมาให้ Browser และเป็นหน้าที่ของ Browser ที่จะตรวจว่า certificate ที่ส่งมา ได้มาจาก CA ที่เชื่อถือได้ ละยังไม่หมดอายุหรือไม่
- ถ้าเชื่อถือได้ Browser จะสร้าง random key ขึ้นมา (ตอนนี้ browser เท่านั้นที่มี random key นี้) แล้วเข้ารหัสด้วย Public Key ที่ได้จาก server แล้วส่งกลับไปให้ Server
- เมื่อ Server ได้รับ random key (ที่ถูกเข้ารหัสไว้) และสามารถถอดรหัสออกมาได้ (โดยใช้ Private key บน server) ก็แสดงว่าเป็นเจ้าของ public key ที่ส่งไปให้ browser จริง และตอนนี้ มีแค่ server กับ browser เท่านั้นที่รู้จัก random key นี้
- หลังจากนี้ การสื่อสารระหว่าง User (Browser) กับ Server จะใช้ random key นี้ในการเข้าระหัสและถอดรหัส ซึ่งบางที random key นี้เรียกว่า Session Key
ที่มา beesamruay.blogspot.com