ลง Let’s Encrypt ใน Apache บน Ubuntu เพื่อใช้เว็บ https

  1. วิธีลง LAMP Stack (Apache, MySQL/MariaDB, PHP) ไปยัง Ubuntu บน EC2
  2. สร้าง MySQL User + Database และจัดการฐานข้อมูลด้วย Adminer
  3. ตั้งค่า Virtual Host ใน Apache เพื่อใช้งาน Domain และ SSL บน Ubuntu
  4. ลง Let’s Encrypt ใน Apache บน Ubuntu เพื่อใช้เว็บ https

จากโพสอื่นๆใน Series LAMP Web Server on Ubuntu เมื่อลงเว็บเซิฟเวอร์และสร้าง Virtual host แล้ว ขั้นตอนต่อไปในโพสนี้จะอธิบายวิธีการใช้ Let’s Encrypt เพื่อลง SSL Certificate สำหรับเว็บเซิฟเวอร์ เพื่อให้ใช้งานเว็บไซต์ผ่าน https ได้นั่นเอง

สิ่งที่ต้องเตรียมก่อนเริ่มลง Let’s Encrypt

เริ่มต้นเปิดใช้งาน SSL และลง Let’s Encrypt

Step 1: เปิดการใช้งาน mod SSL ด้วยคำสั่ง

sudo a2enmod ssl
หากมี Firewall ต้อง Allow Port ก่อน

หากในเซิฟเวอร์มีเปิด Firewall อยู่ จะต้องทำการ Allow port เว็บ (80, 443) เสียก่อนจึงจะสามารถเข้าถึงเว็บไซต์บนเซิฟเวอร์ได้ เช่น กรณีไฟร์วอล์ ufw สามารถเพิ่มพอร์ทที่อนุญาตได้โดยรันคำสั่ง sudo ufw allow 80,443/tcp

Step 2: ลง Certbot เพื่อใช้สร้าง SSL certificate และเพื่อต่ออายุ certificate อัตโนมัติก่อนหมดอายุ ด้วยคำสั่ง

sudo apt-get update

sudo apt install python3-certbot-apache -y

Step 3: ตั้งค่า SSL สำหรับโดเมนที่เราต้องการ (ต้องมีไฟล์ Virtual host ที่ site enable อยู่แล้ว)

sudo certbot --apache -d DOMAIN_NAME.com -d www.DOMAIN_NAME.com

เมื่อรันคำสั่ง certbot แล้ว หากเป็นการใช้งานครั้งแรก จะมีคำถามให้ตอบ เช่น ให้อีเมลล์ผู้ดูแล หรือให้ยอมรับ Terms of Service เป็นต้น

จากนั้น certbot จะทำการขอ SSL certificate จาก let’s encrypt สำหรับโดเมนดังกล่าว หากสำเร็จจะ certbot สร้างไฟล์ apache config และ enable site ที่เป็น SSL ขึ้นมา โดยจะคัดลอกการตั้งค่ามาจากไฟล์ apache config ของ virtual host ของโดเมนนั้นๆ

ในขั้นตอนการตั้งค่า จะมีคำถาม เช่น ต้องการให้ redirect เว็บไปยัง https หรือไม่ ตอบ 2 หากต้องการให้ redirect จาก http ไปยัง https โดยอัตโนมัติ

หากทุกอย่างลงสำเร็จเรียบร้อยดีแล้ว สามารถทดลองเข้าเว็บไซต์ได้ที่ https://DOMAIN_NAME.com จะต้องเข้าใช้งานได้โดยไม่มีขึ้น Certificate Error

Step 4: ทดสอบการต่ออายุ certificate โดยอัตโนมัติ

เนื่องจาก SSL Certificate ของ Let’s Encrypt จะหมดอายุในเวลา 90 วัน โปรแกรม certbot นี้จึงมีความสามารถในการต่ออายุใบรับรองให้โดยอัตโนมัติ ซึ่งเราสามารถดูการตั้งเวลาการต่ออายุได้โดยรันคำสั่ง

sudo systemctl status certbot.timer

จะแสดงสถานะของ service ที่ใช้ในการต่ออายุ ในที่นี้แจ้งว่าจะมีการรัน certbot วันละสองครั้ง

นอกจากนี้ยังสามารถทดสอบดูว่าหากใบรับรองนี้หมดอายุจริงๆ ระบบจะทำการต่ออายุให้เองโดยอัตโนมัติได้จริงหรือไม่ โดยการรัน

sudo certbot renew --dry-run

หากสามารถทำงานได้เป็นปกติ จะเห็นข้อความดังนี้

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