ก่อนอื่นเลย … เคยสงสัยมั้ยครับว่า https หรือ ssl คืออะไร

หลายต่อหลายครั้งที่เราพิมพ์ชื่อเว็บไซต์ลงในช่อง URL แล้ว Enter มันมักจะปรากฏตัวอักษรสั้นๆ https:// นี้ขึ้นมาด้านหน้าเว็บเสมอ เช่น ‘https://www.google.co.th’ หรือ ‘https://www.facebook.com’ แม้ว่าเราจะไม่ได้เป็นฝ่ายพิมพ์เจ้าตัวอักษร https นี้เลยก็ตามที

Hypertext Transfer Protocol Secure หรือ HTTPS คือโปรโตคอลสำหรับเรียกใช้งานเว็บไซต์ ที่จะระบุว่าการส่งผ่านข้อมูลในเว็บไซต์นี้จะถูกเข้ารหัสเพื่อความปลอดภัย มีการตรวจสอบสิทธิ์ และความสมบูรณ์ของข้อมูลระดับหนึ่งแล้วครับ

อ้าว แล้วอะไรเป็นมาตรฐานในเรื่องนี้ล่ะ ว่าเว็บไซต์ไหนเป็นหรือไม่เป็น https

นั่นคือที่มาของหัวเรื่องวันนี้ครับ SSL

SSL คืออะไร

SSL คือ Secure Socket Layer เป็นเทคโนโลยีการเข้ารหัสข้อมูลเพื่อเพิ่มความปลอดภัยในการส่งข้อมูลบนอินเทอร์เน็ต ทั้งในเว็บไซต์หรือแอปพลิเคชั่นต่างๆ ที่จะทำให้เว็บไซต์ของเราถูกดักจับข้อมูลได้ลำบากขึ้นนั่นเองครับ

เมื่อเราเข้าเว็บไซต์ที่มีการใช้ SSL ทางเว็บไซต์ก็จะส่งกุญแจไขรหัสดอกหนึ่ง (ผมสมมติเป็นกุญแจ A) พร้อมกับใบรับรองดิจิทัลที่เรียกว่า SSL Certificate มาให้เรา ซึ่งใบรับรองดิจิทัลนี้จะถูกรับรองโดยหน่วยงานที่มีความน่าเชื่อถือ (CA) และเว็บเบราเซอร์ของเราก็จะมีข้อมูลของหน่วยงานเหล่านี้อยู่แล้ว และเมื่อยืนยันว่าใบรับรองนี้เป็นของจริง ในส่วนหน้าของเว็บก็จะขึ้นอักษร https มา แสดงให้เห็นว่า นี่คือเว็บที่เข้ามีการเข้ารหัสข้อมูล

แล้วเวลาที่เราส่งข้อมูลอะไรก็ตามที่มีความสำคัญ ตัวเบราเซอร์ของเราก็จะทำการสร้างกุญแจดิจิทัลขึ้นมา 2 ดอกซึ่งเหมือนกันทั้งสองดอก (ผมเรียกเป็นกุญแจ B) แล้วเข้ารหัสกุญแจดอกนี้ด้วย กุญแจ A ที่ได้มาจากเว็บไซต์อีกทีและส่งดอกที่เข้ารหัสแล้วไปยังเซิฟเวอร์ แล้วเมื่อทางฝั่งเซิฟเวอร์ของเว็บได้รับกุญแจที่เราสร้าง เราก็สามารถส่งข้อมูลที่เข้ารหัสจากกุญแจ B ไปมากับเซิฟเวอร์ได้เลย

ซึ่งจากอธิบายมา จริงๆ แล้วทั้งหมดทั้งมวลกินเวลาเพียงแค่ไม่กี่วิเท่านั้นเองครับ

ประเภทของ SSL Certificate  

ถ้ามองดูอย่างผิวเผินแล้วเราคงแยกไม่ออกว่า SSL Certificate แต่และประเภทมันต่างกันอย่างไร เพราะสิ่งที่ทุกคนสังเกตในช่อง URL คือ https อย่างเดียว แต่จริงๆ แล้วมันสามารถจำแนกออกได้ 3 แบบหลักๆ คือ

1. Domain Validation SSL Certificate (DV)

นี่คือการออกใบรับรอง SSLที่ง่ายและไวที่สุด โดยฝั่งผู้ให้บริการ SSL จะมีการตรวจสอบเพียงว่าใครเป็นเจ้าของโดเมน (ชื่อเว็บไซต์) นี้เท่านั้น ไม่มีการตรวจสอบเชิงลึกแต่อย่างใด สามารถทำได้ในเวลาไม่กี่นาที หากเป็นเว็บไซต์ที่ใช้ใบรับรอง Domain Validation จะมีเพียงสัญลักษณ์กุญแจสีเขียวและคำว่า Secure เท่านั้น

ตัวอย่างทำ ssl ให้กับเว็บไซต์

2. Organization Validation SSL Certificate (OV)

ตามชื่อเลยครับ นี่คือ SSL ในระดับองค์กร โดยจะมีการตรวจสอบในเชิงลึกมากขึ้น ทั้งตัวเจ้าของโดเมน และฝั่งองค์กรว่ามีอยู่จริงหรือไม่ผ่านกรมพัฒนาธุรกิจการค้า และอาจต้องยื่นเอกสารบางประการที่ฝั่งผู้ให้บริการ SSL ขอเพื่อยืนยันตัวตนหรือธุรกิจนั้นๆ โดยจะใช้เวลาตรวจมากกว่า Domain Validation พอสมควร บางครั้งอาจกินเวลาเป็นวันเลยทีเดียว โดยจะมีการระบุองค์กรไว้ในส่วน Organization ของ Certificate ด้วย

3. Extended Validation SSL Certificate (EV)

ตัวสุดท้ายคงเป็นการตรวจสอบที่เข้มงวดที่สุด สำหรับ Extended Validation ซึ่งนอกจากจะถูกตรวจสอบเจ้าของโดเมน ตรวจสอบองค์กรผ่านกรมธุรกิจการค้าแบบเดียวกับ Organization Validation แล้ว ยังมีการตรวจสอบข้อมูลเชิงลึกของบริษัทด้วย เช่น มีการตั้งบริษัทมานานเท่าไหร่ เชื่อถือได้มากแค่ไหน โดยจะกินเวลาตรวจสอบราวๆ หนึ่งถึงสองสัปดาห์

ssl ปลอดภัยสูงสุด

หากได้รับ Extended Validation แล้ว ในช่อง URL จะขึ้นกุญแจสีเขียวพร้อมกับชื่อบริษัทมาให้ เราสามารถพบได้ในเว็บไซต์ของธนาคารหรือองค์กรใหญ่ๆ

ทั้งนี้ทั้งนั้นการตรวจสอบในรูปแบบต่างๆ อาจแตกต่างกันไปได้ตามผู้ให้บริการ SSL

ทำไม SSL ถึงสำคัญ

อย่างที่เราทราบกันดีครับว่ายุคสมัยนี้ข้อมูลเป็นใหญ่ และคงไม่มีใครอยากให้ข้อมูลตัวเองหลุดไปง่ายๆ นัก สำหรับประเด็นนี้ผมขอแยกเป็นสองข้อ

1. ความปลอดภัย

อย่างที่เห็นครับว่า SSL คือการเข้ารหัสก่อนส่งข้อมูล ดังนั้นต่อให้เราโดนดักจับข้อมูลได้ ฝ่ายที่ได้ข้อมูลของเราไปก็ไม่อาจอ่านสิ่งที่เราส่งไปได้หรือทำได้ยากถ้าไม่มีกุญแจการเข้ารหัส เราคงรู้แล้วว่าสำหรับโลกดิจิทัลไม่มีความปลอดภัยอะไร 100% แต่นี่ก็นับเป็นการป้องกันที่มีประโยชน์พอสมควร เพราะหากไม่ใช่ https แล้วมีคนดักข้อมูลเราได้ เขาจะได้ไปทั้ง username password หรือข้อความสำคัญต่างๆ ไปในทันที

2. ความน่าเชื่อถือ

แม้แต่ Google ก็มีการให้คำแนะนำเกี่ยวกับการใช้ https ครับ โดยจะขึ้นเป็นคำแนะนำเกี่ยวกับการ Support ในหัวข้อเว็บไซต์เลย อีกทั้งคุณจะสามารถสังเกตได้เลยว่าเวลาใช้ Chrome เข้าไปในเว็บไซต์ที่ไม่มี https จะมีการขึ้นเตือน Not Secure มาให้เลยดังรูป

google ลงโทษคนไม่ทำ ssl

โดยทาง Google มีการออกนโยบายด้านนี้จริงจังตั้งแต่ช่วงปี 2014 และประกาศบังคับใช้กับโดเมนฟรีใน blogspot ช่วงปี 2016 ซึ่งในปัจจุบันก็ยังมีการผลักดันอย่างต่อเนื่อง ทั้งการให้ความสำคัญกับเว็บไซต์ที่มี https ก่อนเมื่อทำการค้นหา

และ Ads (Adwords) ของ Google ก็มีการบังคับเว็บไซต์ให้เป็น https ด้วยเช่นกันเมื่อมีการเก็บข้อมูลสำคัญเช่นข้อมูลส่วนบุคคลหรือการเงิน  เว็บลักษณะดังกล่าว Google Chrome เริ่มลงโทษด้วยการใส่คำว่า Not Secure ตั้งแต่การอัปเดตเดือนตุลาคม 2017

chrome ลงโทษ

 

จากนั้น เดือนกรกฎาคม 2018  Google ได้ออก Chorme เวอร์ชันใหม่ (Chrome 68) ซึ่งจะมีการแสดงผลแบบ ‘ลงโทษ’ คนที่ยังไม่เป็น https ด้วยการปรับน้ำหนักการแสดงผลให้ดูเหมือนเป็นผู้ร้ายมากขึ้น ดังภาพ

 

และตั้งแต่นั้นมา ไม่ว่าเว็บไซต์คุณจะเป็นเพียงเว็บแสดงข้อมูล ไม่ใช่เว็บที่เกี่ยวข้องกับการรักษาข้อมูลส่วนตัวของผู้ใช้  คุณก็จะได้ชื่อว่า Not secure ด้วยครับ

อัปเดต: ปัจจุบัน ทุกๆ Browser ก็หันมาทำเหมือน Chrome กันแล้ว โดยหากเว็บใดยังคงเป็น http อยู่ จะลงโทษเว็บไซต์นั้นโดยการแจ้งเตือน not secure ด้านหน้า url ทำให้เว็บคุณไม่น่าเชื่อถือ

อยากให้เว็บเป็น https ต้องทำยังไง

1. หาใบรับรอง SSL ให้เว็บไซต์ และทำการติดตั้ง

ซึ่งตรงนี้จะมีทั้งแบบเสียเงินและไม่เสียเงินนะครับ ซึ่งโดยส่วนมากทางโฮสต์ของเว็บไซต์ก็จะมีการให้บริการ SSL อยู่แล้วในรูปแบบของการใช้ใบรับรองร่วมกัน และ ถ้าหากโฮสต์มีให้บริการ เราก็สามารถติ๊กเลือกเพื่อติดตั้งได้เลยใน Direct Admin ได้เลยตามที่เห็นในภาพตัวอย่าง

วิธีทำ ssl

หรือจะเลือกจดทะเบียน Certificate เองก็ได้ แม้แต่ใช้ของฟรีอย่าง Let’s Encrypt ก็ยังได้  ซึ่งนอกจากใช้ SSL ผ่านผู้ให้บริการเว็บไซต์ตัวเอง คุณยังสามารถใช้บริการจาก Cloudflare.com ซึ่งมีบริการ SSL ฟรีให้อีกด้วย โดยสามารถดูวิธีติดตั้งอย่างละเอียดได้ที่นี่ ครับ

ทำ ssl กับ cloudfare

หากเป็นผู้ใช้ WordPress ก็จะมี Plug-in สำหรับ SSL ในชื่อ CloudFlare Flexible SSL อยู่แล้วครับ โดยสามารถเข้าไปดูรายละเอียดและวิธีติดตั้งได้ที่นี่ เลยครับผม

2. แก้ไขลิงก์ไปยังหน้าเว็บไซต์

ด้วยความที่เราแก้ไขเว็บไซต์ให้กลายเป็น https แล้ว จะทำให้ลิงก์ต่างๆ ที่เป็น http ไม่สามารถเข้าได้ รวมถึงบางครั้ง Google เองก็หาไม่เจอ ทำให้ต้องมีการ Redirect เว็บไซต์กันใหม่ ด้วยการเข้าไปแก้โค้ดข้างในเว็บไซต์ และการทำวิธี 301 Redirect ใน Direct Admin

แล้วเจ้า 301 Redirect คืออะไรอีก?

ขออธิบายแบบเข้าใจง่ายๆ สมมติหากบ้านเลขที่ของเราโดนเปลี่ยน บุรุษไปรษณีย์หรือคนส่งของคงปวดหัวกับเลขที่เปลี่ยนไปใช่มั้ยล่ะครับ

301 Redirect ก็เหมือนกับการแปะป้ายเส้นทางบอกว่าจริงๆ แล้ว บ้านเลขที่เท่านี้ๆ ก็คือบ้านหลังเดิมนี่ล่ะ แค่มีการปรับเปลี่ยนเลขที่บ้านเฉยๆ หลังจากนั้นของทุกอย่างก็จะถูกส่งมาที่บ้านดังกล่าวตามเดิม ต่อให้เลขเปลี่ยนไปก็ตาม แค่นั้นเองครับ

โดยเราสามารถทำ 301 Redirect ได้ด้วยการสร้างไฟล์ .htaccess ใน public_html ของ direct admin หลังจากนั้นก็ทำการ Edit ไฟล์แล้วใส่โค้ด

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

เสร็จก็กดบันทึกและทดสอบด้วยการเปิดหน้าเว็บเดิมที่เป็น http เพื่อเช็คว่ามัน Redirect มาจริงหรือไม่ ซึ่งถ้าหากเรามีไฟล์ .htaccess อยู่แล้วก็สามารถเพิ่มโค้ดเข้าไปด้านในได้เลยเช่นกัน

Shifu แนะนำ
การทำ 301 Redirect ไม่เพียงแค่เปลี่ยนเส้นทาง แต่ยังโยกค่าต่างๆ จากเว็บไซต์เก่ามาด้วย ทั้งปริมาณเว็บไซต์ที่เชื่อมโยงกับเรา ปริมาณคนดูจากการมองเห็นของ Search Engine ต่างๆ ทำให้เรามั่นใจได้ว่าแม้เปลี่ยนการตั้งค่าเว็บไซต์ แต่ผู้ชมเว็บไซต์เดิมจะไม่หายไปไหนอย่างแน่นอน

3. ตรวจสอบ และ แก้ไข Mixed Content

Mixed content หรือ เนื้อหาผสม เกิดจากการที่องค์ประกอบบางส่วนของเว็บไซต์ของเรายังถูกโหลดมาจากแหล่งที่มาที่เป็น http อยู่ และจะเปลี่ยนหน้าเว็บบางหน้า หรือทุกหน้าของเราให้ขึ้นว่ามันไม่ปลอดภัยต่อผู้ใช้งาน

แล้วเนื้อหาอะไรบ้างที่มักทำให้เกิด Mixed Content ?

หลักๆ คือสิ่งเหล่านี้ครับ

  • รูปภาพ
  • CSS
  • JavaScript

สิ่งที่เป็นปัญหาเหล่านี้สามารถเช็คได้ผ่านเว็บเบราเซอร์อย่าง Chrome หรือ Firefox เลย โดยการเข้า Inspect Page และเข้า Console เพื่อดูว่าส่วนไหนของหน้าเพจเราที่เป็นสาเหตุ และเข้าไปแก้ไขไฟล์หรือลิงก์ดังกล่าวจนหมดสิ้น

Shifu แนะนำ
หากเราใช้ WordPress สามารถใช้ Plug-in ที่มีชื่อว่า Really Simple SSL ในการช่วยแก้ไข mixed content ได้ โดย Plug-in ตัวนี้จะช่วยสแกนหาลิงก์ที่เป็น http แล้วเปลี่ยนให้เป็น https ครับ

4. ทดสอบหน้าเว็บ

ตามที่พิมพ์เลยครับ เราต้องทำการทดสอบหน้าเว็บทุกหน้าว่าการแก้ไขของเรานั้นสมบูรณ์หรือไม่ อย่างไร เพราะจะมีบางกรณีที่เราหลุดหรือพลาดในบางจุด ที่ทำให้การแสดงผลผิดเพี้ยนไปจากความต้องการ การเช็คให้ถี่ถ้วนจะทำให้ลดความเสี่ยงที่ทำให้เกิดความผิดพลาดให้น้อยลงที่สุด

โดยการทดสอบหน้าเว็บนั้นควรทำการทดสอบด้วยเบราเซอร์อย่างน้อยสองหรือสามตัวที่แตกต่างกันนะครับ รวมถึงเช็คการแสดงผลภายในมือถือด้วย เพื่อความปลอดภัยของเว็บไซต์เราเอง  

สรุป

ในยุคปัจจุบันที่ข้อมูลเป็นใหญ่นี้ https เป็นเรื่องที่จำเป็นอย่างยิ่งที่ต้องมีในเว็บไซต์ครับ เพราะนอกจากการเข้ารหัสข้อมูลเพื่อความปลอดภัยแล้ว มันยังช่วยให้ Google หรือ Search Engine อื่นๆ ตีค่าความน่าเชื่อถือของเว็บไซต์เราสูงขึ้นด้วย โดยเฉพาะอย่างยิ่งถ้าคุณกำลังทำ SEO

ตาคุณแล้ว

คงได้เห็นกันแล้วนะครับว่าการมี SSL หรือทำหน้าเว็บให้เป็น https นั้นสำคัญอย่างไร ไม่ว่าคุณจะทำเว็บไซต์รูปแบบไหน ถ้าอยากให้คนเข้ามามีความมั่นใจและเชื่อถือในเว็บไซต์ล่ะก็เรื่องนี้มีผลอยู่มากทีเดียว

ตอนนี้ก็ถึงตาคุณแล้วล่ะครับ ว่าจะเลือกให้เว็บไซต์เป็นรูปแบบเก่าๆ ที่ไม่เข้ารหัสข้อมูล หรือจะเลือกเพิ่มความปลอดภัยให้ตัวเองและผู้ใช้งาน เพื่อความสบายใจของทั้งสองฝ่ายกัน