DEV Community

Cover image for การทำ HTTPS ด้วย Certbot และ Nginx บน Ubuntu Server
Pargorn Ruasijan
Pargorn Ruasijan

Posted on • Originally published at pargorn.com

การทำ HTTPS ด้วย Certbot และ Nginx บน Ubuntu Server

การรักษาความปลอดภัยของเว็บไซต์เป็นสิ่งสำคัญอย่างยิ่งในยุคดิจิทัลปัจจุบัน โดยเฉพาะการใช้โปรโตคอล HTTPS ซึ่งช่วยให้ข้อมูลที่ส่งผ่านเว็บไซต์ของคุณถูกเข้ารหัสและปลอดภัย
ในบทความนี้เราจะมาสอนวิธีการติดตั้งและกำหนดค่า HTTPS บนเซิร์ฟเวอร์ Ubuntu ด้วย Certbot และ Nginx

สิ่งที่ต้องมี

  • เซิร์ฟเวอร์ Ubuntu แนะนำ Ubuntu 20.04 LTS หรือเวอร์ชันล่าสุด
  • Nginx หากยังไม่มี สามารถติดตั้งได้ตามขั้นตอนในบทความนี้
  • โดเมนเนมที่ชี้ไปยังเซิร์ฟเวอร์ของคุณ เช่น example.com และมี DNS records ชี้ไปยัง IP ของเซิร์ฟเวอร์
  • สิทธิ์การเข้าถึงแบบ root หรือผู้ใช้ที่มีสิทธิ์ sudo บนเซิร์ฟเวอร์

วิธีการชี้โดเมนไปยัง IP ของเซิร์ฟเวอร์

  • เพิ่ม DNS records สำหรับโดเมน certbot.pargorn.com ที่ชี้ไปยัง IP ของเซิร์ฟเวอร์
  • เลือก A record และใส่ IP ของเซิร์ฟเวอร์

ขั้นตอนที่ 1 อัปเดตระบบ

  • เริ่มต้นด้วยการอัปเดตแพคเกจของระบบให้เป็นเวอร์ชันล่าสุด
sudo apt update sudo apt upgrade -y 
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 2 ติดตั้ง Nginx

  • หากยังไม่ได้ติดตั้ง Nginx สามารถติดตั้งได้ด้วยคำสั่ง
sudo apt install nginx -y 
Enter fullscreen mode Exit fullscreen mode
  • หลังจากติดตั้งเสร็จสิ้น ตรวจสอบให้แน่ใจว่า Nginx ทำงานอยู่
  • คุณควรเห็นสถานะ active (running) ถ้า Nginx ทำงานถูกต้อง

Image description

ขั้นตอนที่ 3 สร้างเว็บไซต์ “Hello Certbot”

เราจะสร้างเว็บไซต์ง่ายๆ ที่แสดงข้อความ “Hello Certbot” สำหรับโดเมน certbot.pargorn.com

1. สร้างไดเรกทอรีสำหรับเว็บไซต์
sudo mkdir -p /var/www/certbot.pargorn.com/html 
Enter fullscreen mode Exit fullscreen mode
2. กำหนดสิทธิ์ให้กับไดเรกทอรี
sudo chown -R $USER:$USER /var/www/certbot.pargorn.com/html sudo chmod -R 755 /var/www/certbot.pargorn.com 
Enter fullscreen mode Exit fullscreen mode
3. สร้างไฟล์ HTML สำหรับเว็บไซต์
  • สร้างไฟล์ index.html ที่จะแสดงข้อความ “Hello Certbot”
nano /var/www/certbot.pargorn.com/html/index.html 
Enter fullscreen mode Exit fullscreen mode
4. จากนั้นเพิ่มเนื้อหาดังนี้
  • บันทึกไฟล์โดยกด Ctrl + O แล้วออกจาก nano ด้วย Ctrl + X
<!DOCTYPE html> <html> <head> <title>Hello Certbot</title> </head> <body> <h1>Hello Certbot</h1> </body> </html> 
Enter fullscreen mode Exit fullscreen mode
5. สร้างไฟล์การตั้งค่าเซิร์ฟเวอร์สำหรับ Nginx
  • สร้างไฟล์การตั้งค่าสำหรับเว็บไซต์ certbot.pargorn.com
sudo nano /etc/nginx/sites-available/certbot.pargorn.com 
Enter fullscreen mode Exit fullscreen mode
6. เพิ่มเนื้อหาดังนี้
  • บันทึกไฟล์โดยกด Ctrl + O แล้วออกจาก nano ด้วย Ctrl + X
server { listen 80; listen [::]:80; server_name certbot.pargorn.com; root /var/www/certbot.pargorn.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } 
Enter fullscreen mode Exit fullscreen mode
7. เปิดใช้งานการตั้งค่าเว็บไซต์
  • สร้าง symbolic link ไปยัง sites-enabled เพื่อเปิดใช้งานเว็บไซต์
sudo ln -s /etc/nginx/sites-available/certbot.pargorn.com /etc/nginx/sites-enabled/ 
Enter fullscreen mode Exit fullscreen mode
8. ทดสอบการตั้งค่าของ Nginx
sudo nginx -t 
Enter fullscreen mode Exit fullscreen mode

Image description

9. หากไม่มีข้อผิดพลาด ให้รีสตาร์ท Nginx
sudo systemctl reload nginx 
Enter fullscreen mode Exit fullscreen mode
10. ตรวจสอบว่าเว็บไซต์ “Hello Certbot” ทำงานอยู่หรือไม่
  • เปิดเว็บเบราว์เซอร์และเข้าไปที่ http://certbot.pargorn.com

ขั้นตอนที่ 4 ติดตั้ง Certbot

  • Certbot เป็นเครื่องมือที่ช่วยให้การขอและต่ออายุ SSL Certificates จาก Let’s Encrypt เป็นเรื่องง่าย ในการติดตั้ง Certbot สำหรับ Nginx บน Ubuntu
sudo apt install certbot python3-certbot-nginx -y 
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 5 ขอรับ SSL Certificate ด้วย Certbot

  • หลังจากติดตั้งเสร็จสิ้น สามารถใช้ Certbot ในการขอรับ SSL Certificate ได้โดยใช้คำสั่ง
sudo certbot --nginx -d certbot.pargorn.com 
Enter fullscreen mode Exit fullscreen mode

Certbot จะถามข้อมูลต่างๆ ดังนี้

  • อีเมลสำหรับการแจ้งเตือน ใส่อีเมลที่สามารถติดต่อได้เพื่อรับการแจ้งเตือนเกี่ยวกับ SSL Certificate
  • ยอมรับข้อตกลงการให้บริการ
  • เลือกโดเมนที่ต้องการเปิดใช้งาน HTTPS ในที่นี้จะเลือก certbot.pargorn.com
  • เลือกว่าจะทำการเปลี่ยนเส้นทางทั้งหมดจาก HTTP เป็น HTTPS หรือไม่ แนะนำให้เลือกให้เปลี่ยนเส้นทางทั้งหมด

ตัวอย่าง

Which names would you like to activate HTTPS for? - certbot.pargorn.com Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. Your web traffic will then only be available through HTTPS. 1: No redirect - Make no further changes to the webserver configuration 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for simple HTTPS setups. Select the appropriate number [1-2] then [enter] (default: 2): 
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 6 ตรวจสอบการตั้งค่า Nginx

  • Certbot จะปรับแต่งไฟล์การตั้งค่า Nginx ให้รองรับ HTTPS โดยอัตโนมัติ แต่คุณสามารถตรวจสอบได้ที่ไฟล์การตั้งค่าใน /etc/nginx/sites-available/certbot.pargorn.com
server { listen 80; listen [::]:80; server_name certbot.pargorn.com; return 301 https://$host$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name certbot.pargorn.com; ssl_certificate /etc/letsencrypt/live/certbot.pargorn.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/certbot.pargorn.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; root /var/www/certbot.pargorn.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } 
Enter fullscreen mode Exit fullscreen mode
  • หลังจากตรวจสอบแล้ว ให้ทดสอบการตั้งค่าของ Nginx
sudo nginx -t 
Enter fullscreen mode Exit fullscreen mode
  • ถ้าการตั้งค่าถูกต้อง ให้รีสตาร์ท Nginx
sudo systemctl reload nginx 
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 7 ทดสอบเว็บไซต์ด้วย HTTPS

เปิดเว็บเบราว์เซอร์และเข้าไปที่ https://certbot.pargorn.com คุณควรเห็น ไอคอนรูปกุญแจล็อก 🔒 ที่แสดงถึงการเชื่อมต่อที่ปลอดภัย พร้อมทั้งหน้าเว็บที่แสดงข้อความ “Hello Certbot” หากไม่มีข้อผิดพลาดใดๆ เกิดขึ้น แสดงว่าการตั้งค่า HTTPS สำเร็จเรียบร้อยแล้ว

Image description

ขั้นตอนที่ 8 ตั้งค่าการต่ออายุอัตโนมัติสำหรับ SSL Certificate

  • SSL Certificates จาก Let’s Encrypt มีอายุ 90 วัน คุณสามารถตั้งค่าให้ Certbot ต่ออายุอัตโนมัติได้ด้วยการเพิ่ม Cron Job หรือใช้ systemd timer ที่มาพร้อมกับ Certbot

  • ตรวจสอบให้แน่ใจว่า Cron Job สำหรับ Certbot มีอยู่

sudo systemctl list-timers | grep certbot 
Enter fullscreen mode Exit fullscreen mode

Image description

  • โดยปกติ Certbot จะตั้งค่าให้ทำการตรวจสอบและต่ออายุอัตโนมัติทุกวัน หากต้องการตรวจสอบการต่ออายุสามารถทำได้ด้วยคำสั่ง
  • ถ้าไม่มีข้อผิดพลาด แสดงว่าการตั้งค่าการต่ออายุอัตโนมัติทำงานได้ถูกต้อง
sudo certbot renew --dry-run 
Enter fullscreen mode Exit fullscreen mode

สรุป

การติดตั้งและกำหนดค่า HTTPS บน Nginx ด้วย Certbot บน Ubuntu Server เป็นกระบวนการที่ไม่ซับซ้อนและสามารถทำได้ในไม่กี่ขั้นตอน การใช้ HTTPS จะช่วยเพิ่มความปลอดภัยให้กับเว็บไซต์ของคุณและสร้างความเชื่อมั่นให้กับผู้ใช้งาน ในบทความนี้เราได้สร้างเว็บไซต์ที่แสดงข้อความ “Hello Certbot” และใช้โดเมน certbot.pargorn.com เพื่อแสดงให้เห็นถึงการตั้งค่าอย่างครบถ้วน อย่าลืมตรวจสอบและต่ออายุ SSL Certificates อย่างสม่ำเสมอเพื่อรักษาความปลอดภัยของเว็บไซต์อย่างต่อเนื่อง

อ้างอิง

Top comments (0)