เมื่อเว็บไซต์ไม่ปลอดภัย! เปลี่ยนมาใช้ HTTPS กันเถอะ

ปัจจุบันคนที่ใช้ Google Chrome เวอร์ชั่น 56 อาจจะเจอคำว่า “ไม่ปลอดภัย (Not secure)” อยู่หน้าชื่อโดเมนเวลาเข้าหน้าบางหน้า แต่พอเปลี่ยนไปหน้าอื่นกลับไม่มีคำเตือนขึ้น

เบราว์เซอร์จะแสดงคำว่า “ไม่ปลอดภัย (Not secure)” เมื่อเราเปิดหน้าเว็บไซต์ที่มีการขอรหัสผ่าน หรือข้อมูลสำคัญอื่น ๆ โดยไม่มีการเข้ารหัส (คือใช้ http) ซึ่งทำให้ข้อมูลที่ส่งออกไปนั้นถูกดักฟังได้ สำหรับคนใช้เวิร์ดเพรส ก็มักจะเจอในหน้าล็อกอิน หรือหน้าสมัครสมาชิกนั่นเอง

ในอนาคต Google Chrome จะเพิ่มระดับการแจ้งเตือนให้แสดงคำว่า “ไม่ปลอดภัย (Not Secure)” และใช้สัญลักษณ์เป็นรูปสามเหลี่ยมสีแดงเห็นได้ชัดเจนก่อนชื่อโดเมนเนม โดยจะเริ่มจากผู้ใช้ในโหมดไม่ระบุตัวตน (Incognito) ก่อน หลังจากนั้นจะเพิมเข้ามาในโหมดปกติเป็นค่าเริ่มต้น (default) ของ Google Chrome ต่อไป

เบราว์เซอร์ตัวอื่นเป็นยังไงกันบ้าง

ตอนนี้ Mozilla Firefox ออกเวอร์ชั่น 51 เริ่มแจ้งเตือนเป็นแบบเบา ๆ ด้วยการแสดงไอคอนรูปแม่กุญแจสีดำมีเส้นสีแดงคาดทับ เพื่อแสดงสัญลักษณ์เตือนว่าเว็บไซต์ที่ไม่ได้เข้ารหัสเป็นเว็บไซต์ที่ไม่ปลอดภัย แนวทางเดียวกับ Google Chrome เช่นกัน

ทางแก้? เปลี่ยนมาใช้ HTTPS กันเถอะ

การส่งข้อความในฟอร์มต่าง ๆ ผ่าน http จะถูกดักฟังได้ แต่ถ้าผ่าน https ที่มีการเข้ารหัส จะทำให้ดักฟังไม่ได้ (หรือยากมาก) และผลดีที่เกิดขึ้นก็คือ

ความปลอดภัย

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

อันดับผลการค้นหา

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

ลูกเล่นใหม่ ๆ บน html ไม่สนับสนุน http

ความสามารถของเว็บไซต์ที่น่าสนใจเมื่อเปลี่ยนมาใช้ https นั่นก็คือ การที่เว็บไซต์มีการเชื่อมต่อกับอุปกรณ์ ทำให้เว็บไซต์มีความสามารถที่มากขึ้นใกล้เคียงกับความเป็นแอพพลิเคชั่น หรือที่เรียกกันว่า “Progressive Web Apps” ซึ่งเป็นแนวทางของการทำเว็บไซต์ให้ออกมาเหมือนแอพพลิชั่นนั่นเอง ตัวอย่าง การเชื่อมต่อกับอุปกรณ์ Bluetooth LE ผ่าน Bluetooth API

อยากได้เว็บไซต์ที่เป็น https ต้องทำอย่างไร?

ข่าวดีสำหรับผู้ที่ใช้ Control Panel เป็น DirectAdmin ครับ ตั้งแต่เวอร์ชั่น 1.5 เป็นต้นไป ระบบจะรองรับการใช้งาน Let’s Encrypt มาในตัว สามารถสอบถามไปยังผู้ให้บริการโฮสติ้งที่ใช้งานอยู่เพื่อขอให้ติดตั้ง SSL Certificate ให้กับเว็บไซต์ได้เลย

ติดตั้งเองก็สามารถทำได้

ขั้นตอนการติดตั้ง https ให้กับเว็บไซต์โดยใช้ DirectAdmin นั้นแสนจะง่ายดาย สามารถทำให้เสร็จเรียบร้อยโดยใช้เวลาไม่นาน มาเริ่มกันเลย

Login เข้าสู่ DirectAdmin

เริ่มต้นการติดตั้งโดยการ Login เข้าสู่ DirectAdmin ตาม url ที่ทางผู้ให้บริการแจ้งรายละเอียดมาทางอีเมล์ โดยทั่วไปจะมีลักษณะเป็นเลขไอพีของผู้ให้บริการ 123.45.678.900:2222

เปิดใช้งาน SSL Certificates

ก่อนที่จะเปิดใช้งาน SSL Certificates โดยผ่าน DirectAdmin นั้น ขออธิบายเกี่ยวกับ SSL Certificates ให้เข้าใจก่อนเริ่มติดตั้ง

  • SSL Certificates ทุกชนิดไม่สามารถป้องกัน Hacker ได้
  • SSL Certificates มีหน้าที่เข้ารหัสการเชื่อมต่อข้อมูลให้ปลอดภัย เพื่อไม่ให้สามารถูกดักฟัง หรือดักอ่านข้อมูลระหว่างทางได้เท่านั้น
  • SSL Certificates ของ Let’s Encrypt มีอายุ 60 วันต้องต่ออายุทุก ๆ 60 วัน โดยปกติแล้ว DirectAdmin จะทำการ Auto Renew ให้ใหม่โดยอัตโนมัติ

ขั้นตอนการเปิดใช้งาน SSL Certificate ผ่าน DirectAdmin

  • ไปยังโซน Your Account เลือกเมนู Domain Setup

  • เลือกโดเมนที่ต้องการเปิดใช้งาน SSL Certificates

  • เลือก Secure SSL จากนั้นคลิก Save

  • ในส่วนของ private_html setup ให้เลือก Use a symbolic link from private_html to public_html – allows for same data in http and https

เพิ่มเติม

  • public_html คือที่เก็บไฟล์ สำหรับเข้าหน้าเว็บไซต์แบบปกติ
  • private_html คือที่เก็บไฟล์ สำหรับเข้าหน้าเว็บไซต์ผ่าน https

การเลือก Use a symbolic link from private_html to public_html – allows for same data in http and https หมายถึง การเชื่อมโยงของ public_html กับ private_html ให้ใช้ข้อมูลชุดเดียวกัน ถ้าเราอัพไฟล์ไปไว้ที่ plublic_html จะสามารถเรียกดูได้ทั้ง http และ https นั่นเอง

  • จากนั้นคลิก Save

จะเห็นว่าถ้าลองเข้าหน้าเว็บไซต์ผ่าน https ก็จะเจอ “ไม่ปลอดภัย (Not secure) สีแดงก็ไม่ต้องตกใจ ตามที่บอกไป private_html คือที่เก็บไฟล์ สำหรับเข้าหน้าเว็บไซต์ผ่านลิ้ง SSL เพราะว่ายังไม่ได้สร้างใบรับรอง SSL Certificates

แต่ก็ยังสามารถเข้าเว็บไซต์ผ่าน http ได้ตามปกติ

สร้าง SSL Certificates

เมื่อยังไม่ได้สร้าง SSL Certificates ให้กลับมาที่ DirectAdmin อีกครั้ง เพื่อสร้าง SSL Certificates

  • ไปยังโซน Advanced Features เลือกเมนู SSL Certificates

  • เลือกเมนู Use the server’s shared signed certificate.
  • เลือก Free & automatic certificate from Let’s Encrypt
  • เพิ่มข้อมูล อีเมล์ลงไป

เพิ่มเติม

  • Common Name ชื่อโดเมน หรือชื่อบริษัท จริง ๆ แล้วใช้ตามเดิมได้เลย
  • E-Mail ให้เราใส่อีเมล์ของเราลงไป เวลาไกล้หมดอายุมันจะส่ง อีเมล์มาแจ้งให้เราทราบ
  • Key Size (bits) ขนาดของใบรับรอง แนะนำเลือกที่ 2048
  • Certificate Type ประเภทใบรับรอง แนะนำให้เลือกเป็น SHA256

Key Length หรือ Key size คือ ความยาวของคีย์ที่เรียกว่า Private Key ที่จะทำการ Generate key pair ออกมา ตอนที่ผู้ขอใบรับรอง SSL ทำการ Generate CSR ซึ่งจะแสดงให้เห็นใน Certificate path เวลาที่มีการติดตั้ง SSL Certificate เรียบร้อยแล้ว

ปัจจุบันผู้ออกใบรับรอง SSL ส่วนใหญ่ จะกำหนดให้ผู้ขอใบรับรอง SSL ทำการ Generate CSR ที่ความยาวของคีย์ (Key length) ไว้ที่ 2048-bit

Private Key คือ กุญแจสำคัญที่ใช้เข้ารหัส – ถอดรหัสข้อมูลระหว่างเครื่องเซิร์ฟเวอร์ของผู้ขอใบรับรอง SSL

สำหรับไฟล์ Private Key จะได้ออกมาในขั้นตอน Generate CSR หากไม่มีการสำรองไฟล์ดังกล่าวไว้บนเครื่องหรือเก็บรักษาให้ดี จะทำให้ไม่สามารถติดตั้ง SSL Certificate ได้ เพราะผู้ออกใบรับรอง SSL Certificate จะใช้การตรวจสอบว่า Certificate นี้ Match กับไฟล์ Private Key ของเซิร์ฟเวอร์ที่ขอใบรับรองหรือไม่

CSR (Certificate Signing Request) คือ รหัสข้อความชุดหนึ่ง เพื่อนำไปใช้ในการสั่งซื้อ SSL โดยที่ผู้ขอใบรับรอง SSL จะต้องทำการสร้างขึ้นมาผ่านเซิร์ฟเวอร์ ที่ต้องการติดตั้ง SSL Certificate โดยที่ CSR จะถูกสร้างขึ้นจาก Private Key อีกครั้งหนึ่ง

ตัวอย่างของ CSR

Certificate Type ประเภทใบรับรอง ที่แนะนำให้เลือกเป็น SHA256 นั่นก็เพราะว่า Google Chrome ออกมาประกาศนโยบาย ว่าใบรับรอง SSL ที่ใช้ SHA-1 ไม่ปลอดภัยตั้งแต่ต้นปี 2015 เป็นต้นไป

  • จากนั้นคลิก Save ด้านล่างสุด

  • ระบบจะแสดงหน้า Certificate and Key Saved. หากยังไม่ขึ้นว่า Certificate and Key Saved. ให้กลับไป Advanced Features เลือกเมนู SSL Certificates อีกครั้ง จากนั้นทำตามขั้นตอนเดิมจนกว่าจะขึ้น Certificate and Key Saved.

  • หากระบบทำการสร้าง Certificate and Key เรียบร้อยเมื่อเลือกเมนู SSL Certificates อีกครั้ง ด้านล่างสุดก่อนถึงปุ่ม Save จะมีอายุของ Certificate and Key โดยปกติระบบจะทำการต่ออายุของ Certificate and Key ให้อัตโนมัติ และจะแสดงวันที่จะทำการต่ออายุให้อัตโนมัติในอีกกี่วัน

ข้อควรระวัง

สำหรับเว็บไซต์ที่พึ่งเปลี่ยนจาก http เป็น https ในการเปิดใช้งาน https จะยังไม่ขึ้นสีเขียวแต่เว็บไซต์จะเปลี่ยนจาก http เป็น https เรียบร้อยแล้ว ให้ตรวจสอบ url ต่าง ๆ ภายในเว็บไซต์ว่ามีส่วนไหนที่เรียกใช้งาน http อยู่บ้าง หากว่ามีให้ทำการเปลี่ยนจาก http เป็น https ให้เรียบร้อย จากนั้น https ก็จะขึ้นรูปกุญแจสีเขียว

ภาพตัวอย่างปัญหา Mixed Content มีการเรียกใช้ URL แบบ http ภายในเว็บไซต์

ตอนนี้ถ้าลองเข้าเว็บไซต์ผ่าน https จะเห็นว่าเว็บไซต์แสดงคำว่า “ปลอดภัย(Secure)” เรียบร้อยแล้ว

และยังสามารถเข้าผ่าน http แบบปกติได้อีกด้วย

เพิ่มเติม

การที่สามารถเข้าถึงเว็บไซต์ได้ทั้งแบบ http ปกติและแบบ https นั้นในทาง SEO แล้วไม่เป็นผลดีเท่าไหร่ เพราะว่า Search Engine จะมองว่าเว็บไซต์ที่เป็นแบบ http และ https นั้นเป็นคนละเว็บไซต์กัน ซึ่งศัพท์ทางเทคนิคเรียกว่า “Duplicate Content” กรณีเดียวกันกับการเข้าถึงเว็บไซต์ที่มี www และ non-www ในลักษณะนี้ Search Engine เองก็มองว่าเป็นคนละเว็บไซต์เช่นเดียวกัน

ทางแก้? ทำ 301 redirect เปลี่ยน http เป็น https ซะเลย

การทำ 301 redirect นั้นเป็นวิธีที่จะบอก Search Engine และผู้ใช้ทั่วไปว่าเว็บไซต์ ตอนนี้เปลี่ยนจาก http เป็น https แล้ว รวมไปถึง redirect ผู้ชมจาก http มาเป็น https ทั้งหมดด้วย

วิธีทำ 301 rediract ที่ง่ายที่สุดคือ สร้างไฟล์ .htaccess

  • ไปที่โซน เมนูหลัก เลือก Files ( อยู่บริเวณรูปดาวที่เขียนว่า Logout )

  • เลือก public_html

  • ไปยังส่วนล่างสุดของเว็บไซต์เพื่อสร้างไฟล์ .htaccess ในส่วนของ Create New File พิมพ์คำว่า .htaccess จากนั้นกด Create

  • ระบบจะพามายังส่วนของการแก้ไขไฟล์

เพิ่ม code ด้านล่างนี้ลงไป

# BEGIN Force http to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# END Force http to https

  • จากนั้นกด Save As

เสร็จเรียบร้อยแล้วลองเข้าเว็บไซต์ผ่าน http แบบปกติ ระบบจะทำการ redirect ไปยังเว็บไซต์แบบ https ทันที

เป็นอย่างไรกันบ้างครับสำหรับบทความ “เมื่อเว็บไซต์ไม่ปลอดภัย! เปลี่ยนมาใช้ HTTPS กันเถอะ” เมื่อลองทำดูแล้วติดปัญหา หรือทำไปแล้วเกิด Mixed Content แก้ไขไม่ได้สามารถติดต่อสอบถามกันมาได้ที่ห้อง “ถาม-ตอบ” ในส่วนของ ถามปัญหาการทำเว็บด้วยเวิร์ดเพรส ได้ครับ

แหล่งข้อมูล