พาร์ทต่อจาก Deploy WordPress บน cloud แบบง่ายๆ (มี SSL ด้วยนะ)
วิธีติดตั้งและจัดการ SSL Certificates บน Google Cloud Platform
SSL Certificate คืออะไร
SSL ย่อมาจาก Secure Socket Layer คือ เทคโนโลยีการเข้ารหัสข้อมูล เพื่อเพิ่มความปลอดภัยในการสื่อสารหรือส่งข้อมูลบนเครือข่ายอินเทอร์เน็ต ระหว่างเครื่องเซิร์ฟเวอร์กับเว็บเบราว์เซอร์หรือ Application ที่ใช้งาน เพื่อให้ข้อมูลของท่านปลอดภัยจากการเข้าถึง
โดย SSL จะเป็นใบรับรองอิเล็กทรอนิกส์ ที่เป็นไฟล์ข้อมูลขนาดเล็ก ที่ผูกไว้กับ Private Key ของเครื่องเซิร์ฟเวอร์ เพื่อยืนยันตัวตนและความถูกต้องในการส่งข้อมูลระหว่างเครื่องเซิร์ฟเวอร์กับเว็บเบราว์เซอร์หรือ Application ที่ใช้งาน มีการเข้ารหัสและถอดรหัสผ่านเทคโนโลยี SSL/TLS หากข้อมูลของท่านถูกดักจับไปได้ ข้อมูลก็ท่านก็ยังมีความปลอดภัย
ทำไมเราต้องใช้ SSL Certificate
- ด้านความปลอดภัย คือ การให้ความสำคัญในเรื่องความปลอดภัยของข้อมูลที่ต้องการรับ-ส่งบนระบบเซิร์ฟเวอร์ ทั้งในรูปแบบอินเตอร์เน็ต และระบบอินทราเน็ตว่าต้องการความปลอดภัยมากน้อยแค่ไหน หากเป็นข้อมูลสำคัญก็ควร ส่งผ่านระบบเซิร์ฟเวอร์ ที่มีการติดตั้ง SSL Certificate เพื่อป้องกันช่องโหว่ให้กับกลุ่มมิจฉาชีพ เช่น พวก Hacker ที่คอยจ้องขโมยข้อมูลสำคัญๆบนระบบ Internet
- ด้านความน่าเชื่อถือ ช่วยเพิ่มความมั่นใจในการชำระเงินออนไลน์ของลูกค้า ให้กับเว็บไซต์ของคุณมากยิ่งขึ้น โดยเฉพาะเว็บที่มีการทำธุรกรรมออนไลน์เกี่ยวกับระบบ Ecommerce, Booking Online ที่ต้องมีการกรอกข้อมูลส่วนตัว ข้อมูลบัตรเครดิต รหัสผ่านต่าง ๆ และลูกค้าสามารถแสดงเครื่องหมาย Trust Site Seal ของผู้ออกใบรับรอง SSL บนเว็บไซต์ เพื่อยืนยันความน่าเชื่อถือยิ่งขึ้น
- ด้านการใช้งาน ต้องการระบบ ที่ผ่านการรับรองของ CA เพื่อช่วยลดปัญหา Browser ขึ้นข้อความเตือน Security Warning ขึ้นมา เมื่อมีการเรียกเข้าสู่เว็บไซต์ ทำให้ผู้เข้าเว็บไซต์ต้อง Click Accept ยืนยันตอบรับ Certificate ดังกล่าวก่อนเข้าสู่เว็บไซต์นั้น ๆ สาเหตุจากการที่ผู้ดูแลระบบเซิร์ฟเวอร์ ทำการสร้างมาติดตั้งเอง หรือที่เรียกว่า SSL Self-Signed Certificate
Google ให้คะแนน SEO พิเศษ สำหรับเว็บที่เป็น HTTPS
Google ได้ออกมาประกาศเรื่องการให้คะแนนในการจัดอันดับผลลัพท์ของการค้นหา ว่าถ้าเป็นเว็บไซต์ที่เป็น https:// จะได้คะแนนที่ดีกว่าเว็บไซต์ http:// ดังนั้นถ้าเว็บไซต์ของคุณติด SSL certificate นอกจากจะได้เรื่องความปลอดภัยในการรับส่งข้อมูลแล้ว ก็ยังจะได้คะแนน SEO
ถ้ากรณี SSL หมดอายุแล้วไม่ต่ออัตโนมัติ ให้ทำตามนี้เลย
Stop server ก่อน
sudo /opt/bitnami/ctlscript.sh stop
เสร็จแล้วรันคำสั่ง
sudo /opt/bitnami/letsencrypt/lego --tls --email="ใส่อีเมลล์ตรงนี้" --domains="ใส่โดเมนตรงนี้" --path="/opt/bitnami/letsencrypt" renew --days 90
**ถ้าจำ domain ไม่ได้ให้ลองเข้าไปดูที่ /opt/bitnami/letsencrypt/certificates
เมื่อรันเสร็จ แล้วถ้าการ renew cert สำเร็จเราจะได้ข้อความดังนี้
acme: Validations succeeded; Server responded with a certificate.
ถ้าสำเร็จตามนี้ ก็แสดงว่าการ renew ของเราเสร็จสมบูรณ์ ให้ start server ได้เลย
sudo /opt/bitnami/ctlscript.sh start
ทีนี้ ถ้าเราอยากให้มันต่อให้เองทุกเดือนด้วยความขี้เกียจของเรา ให้สร้าง script ไว้รันด้วย cron เอา ทำตามนี้นะ
sudo vim /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
เมื่อเปิดแล้วให้พิมพ์ a เพื่อเข้าสู่ append mode ของ vim แล้วพิมพ์คำสั่งตามนี้
#!/bin/bash sudo /opt/bitnami/ctlscript.sh stop apache sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90 sudo /opt/bitnami/ctlscript.sh start apache
ถ้าสมมุติว่าเราอยากให้ cert นี้ใช้ได้กับหลายๆ domains ก็เพิ่มเข้าไปดื้อๆได้เลยแบบนี้
#!/bin/bash sudo /opt/bitnami/ctlscript.sh stop apache sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="yourdomain.com" --domains="www.yourdomain.com" --path="/opt/bitnami/letsencrypt" renew --days 90 sudo /opt/bitnami/ctlscript.sh start apache
กด ctrl + c และพิม :wq เพื่อเซฟไฟล์ ตอนนี้เราจะได้ไฟล์ shell script ที่พร้อมเอาไปให้ cron รันแล้ว ขั้นตอนต่อไปเราจะเพิ่ม schedule ลงใน cron โดยเริ่มจากเปิด cron table ด้วย edit mode ก่อน
sudo crontab -e
เสร็จแล้วให้ใส่คำสั่งตามนี้ และกด ctrl + q และพิมพ์ :wq เพื่อเซฟไฟล์
0 0 1 * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 2> /dev/null
เท่านี้เราก็จะได้ job ที่จะรันทุกๆวันที่1 ของเดือนเพื่อต่ออายุ SSL Certificates แล้วจ้ะ
(ทำไมถึงเป็นวันที่ 1 ให้ลองหาอ่านเรื่องการตั้งค่า cron ดูนะ )
เพิ่มเติมในส่วน SSL Certificates for iOS ให้เข้าไปแก้
server { listen 443 ssl; server_name localhost example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #include "/opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf"; include "/opt/bitnami/nginx/conf/bitnami/bitnami-apps-prefix.conf"; } server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #include "/opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf"; include "/opt/bitnami/nginx/conf/bitnami/bitnami-apps-prefix.conf"; }
เท่านี้ก็เรียบร้อย
สาเหตุที่จำเป็นต้องมีระบบ SSL Certificates
เนื่องด้วยปัจจุบัน Internet ได้กลายเป็นส่วนสำคัญของการติดต่อสื่อสาร และยังเป็นสื่อหลักในการทำธุรกิจ การค้า และธุรการต่างๆ เนื่องจากมีความสะดวกและรวดเร็ว ดังนั้นการเรียกดู การเข้าใช้งาน การรับ-ส่งข้อมูลสำคัญต่าง ๆ ผ่านระบบ Internet อาจเกิดช่องโหว่ได้ หากไม่มีการจัดเก็บข้อมูลสำคัญดังกล่าว ด้วยระบบรักษาความปลอดภัยที่ดีพอ เพราะปัจจุบันมี Hacker จำนวนไม่น้อยที่คอยจ้องขโมยข้อมูลสำคัญๆ บนระบบอินเตอร์เน็ต
การเข้ารหัสข้อมูลผ่าน SSL จึงเป็นส่วนสำคัญ ที่จะช่วยสร้างความน่าเชื่อถือ และความมั่นใจในความปลอดภัย ให้ทั้งเจ้าของเว็บไซต์ และผู้ใช้งานเว็บไซต์ด้วย ซึ่งระบบ SSL จะทำให้ การรับ – ส่งข้อมูลสำคัญ เช่น ข้อมูลส่วนตัว ข้อมูลบัตรเครดิต Password รหัสผ่านต่าง ๆ ไม่ถูกเปิดเผย หรือถูกขโมยได้ สร้างความปลอดภัยให้กับผู้ใช้งาน
อ้างอิง
https://netway.co.th
https://arit.rmutsv.ac.th