Creating SSL Certificate on Google cloud platform
พาร์ทต่อจาก 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