Creating SSL Certificate on Google cloud platform

Posted byHappio Team Posted onMarch 22, 2020 Comments0
SSL Certificate

พาร์ทต่อจาก 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 หรือเครื่องหมายรับรองความปลอดภัยทางอิเล็กทรอนิกส์ ที่ออกหรืออนุมัติโดย CA (Certificate Authority) โดยหลักๆ มี 3 ด้าน คือ
  1. ด้านความปลอดภัย คือ การให้ความสำคัญในเรื่องความปลอดภัยของข้อมูลที่ต้องการรับ-ส่งบนระบบเซิร์ฟเวอร์ ทั้งในรูปแบบอินเตอร์เน็ต และระบบอินทราเน็ตว่าต้องการความปลอดภัยมากน้อยแค่ไหน หากเป็นข้อมูลสำคัญก็ควร ส่งผ่านระบบเซิร์ฟเวอร์ ที่มีการติดตั้ง SSL Certificate เพื่อป้องกันช่องโหว่ให้กับกลุ่มมิจฉาชีพ เช่น พวก Hacker ที่คอยจ้องขโมยข้อมูลสำคัญๆบนระบบ Internet
  2. ด้านความน่าเชื่อถือ ช่วยเพิ่มความมั่นใจในการชำระเงินออนไลน์ของลูกค้า ให้กับเว็บไซต์ของคุณมากยิ่งขึ้น โดยเฉพาะเว็บที่มีการทำธุรกรรมออนไลน์เกี่ยวกับระบบ Ecommerce, Booking Online ที่ต้องมีการกรอกข้อมูลส่วนตัว ข้อมูลบัตรเครดิต รหัสผ่านต่าง ๆ และลูกค้าสามารถแสดงเครื่องหมาย Trust Site Seal ของผู้ออกใบรับรอง SSL บนเว็บไซต์ เพื่อยืนยันความน่าเชื่อถือยิ่งขึ้น
  3. ด้านการใช้งาน ต้องการระบบ ที่ผ่านการรับรองของ 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

Facebook Comments
Category