Mr.Green

สร้าง บันทึกและแบ่งปัน

พิมพ์ค้นหาบทความได้ในช่องค้นหา

การออกใบรับรอง CA ให้กับ Ubuntu 22.04

การออกใบรับรอง CA ให้กับ Ubuntu 22.04 หรือการใช้ Let’s Encrypt บน Ubuntu 22.04 Let’s Encrypt  คือผู้ออกใบรับรอง  (Certificate Authority หรือ CA) ให้เราสามารถใช้งาน HTTPS เพื่อเข้ารหัสบนเว็บเซิร์ฟเวอร์ของเรา ช่วยจัดการในการติดตั้ง TLS/SSL ฟรี  โดยดำเนินการผ่านทางตัวซอฟแวร์ที่เรียกว่า Certbot ในการติดตั้งนั้นสามารถติดตั้งใบรับรองได้ทั้ง Apache และ Nginx 

แต่สำหรับในบทความนี้ แนะนำการติดตั้งเพื่อใช้งานออกใบรับรองให้กับ apache   โดยใช้ Certbot 

การติดตั้ง Certbot

ในการรับ ใบรับรอง SSL จาก Let’s Encrypt นั้น  เราต้องติดตั้ง Certbot  บน Server  เราก่อน โดยใช้แหล่งข้อมูลแพ็คเก็ตของ Ubuntu  สำหรับติดตั้ง 

เริ่ม จากใช้คำสั่ง update ก่อน เพื่อสร้างสารบัญแพ็คเก็ต

sudo apt update

ต้องติดตั้ง 2 แพ็คเก็ต คือ certbot, and python3-certbot-apache

แพ็คเก็ตตัวหลังคือตัวปลักอินที่จะช่วยให้ Certbot และ Apache สามารถออกใบรับรองและกำหนดค่า HTTPS ภายใน Server ได้ในขั้นตอนเดียวโดยใช้คำสั่ง

sudo apt install certbot python3-certbot-apache

หลังจากติดตั้ง Certbot บน Server เสร็จ ขั้นตอนต่อไปคือการการตรวจสอบการกำหนดค่าหรือการปรับแต่งค่าใน Apache ว่าการสร้างโอสต์เสมือนของเรามีถูกต้องหรือไม่อย่างไร เพื่อให้มั่นใจว่า สคริปต์ของ Certbot ที่เราติดตั้งรู้จักกับโดเมนของเราและรับรู้ค่าใหม่เพื่อออกไปรับรอง SSL 

การตรวจสอบ Apache Virtual Host Configuration

การตรวจสอบค่า วิชวลโอสต์ของเรา ดูได้จากบทความที่ผ่านมา   ในเรื่องการสร้าง virtual Host

หากเราปรับแต่งเสร็จแล้วไม่ต้องดำเนินการอะไรเพิ่มเติม แต่หากเรายังไม่ได้ปรับแต่งให้กลับไปปรับแต่งให้ถูกต้อง โดยให้ดู 2 ส่วนคือ

ServerName กับ ServerAlias

เปิดค่าให้ HTTPS ผ่านทางไฟล์วอลได้

ส่วนนี้ไม่มีอะไรมากแค่เปิดใช้งาน ให้ https วิ่งผ่านไฟล์วอลได้

sudo ufw status;
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
sudo ufw status

การรับใบรับรอง SSL

Certbot มีรูปแบบในการออกใบรับรองได้หลายวิธีมาก โดยการสร้างใบรับรอง SSL ผ่านทาง Plugin  

อีกทางเลือกหนึ่งคือการใช้ ปลักอินของ Apache  ที่จะช่วยในการกำหนดค่าและเรียกค่าใหม่ทุกคร้้งเมื่อจำเป็น โดยการใช้คำสั่งนี้

sudo certbot --apache

ในระหว่างที่สคริปต์กำลังทำงาน จะมีคำถามต่างๆๆ มาให้เราตอบตลอดเวลา ให้ค่อยตอบคำถามต่างๆ  เพื่อให้การกำหนดค่า SSL เป็นไปอย่างถูกต้อง

อย่างคำถามแรก เกี่ยวกับ Email ให้เรากรอกรายละเอียดหรือไม่กรอกก็ได้ แต่แนะนำว่าให้กรอกและให้ใช้เมล์ที่เราอ่านตลอด เพราะเราสามารถรับข่าวสารต่างๆๆ ได้ เช่น เมื่อมีการแจ้งเตือนเกี่ยวกับการต่ออายุหรือเกี่ยวกับความปลอดภัย

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): you@your_domain

หลังจากที่กำหนด Email แล้ว ขั้นตอนต่อไปคือ การยืนยัน ให้กดตกลง

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

เป้นคำถามเกี่ยวกับการแบ่งปัน Email เพื่อรับเนื้อหาหรือข่าวสารต่าง ๆๆ หากไม่ต้องการให้กด N

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

ในขั้นตอนต่อมา เป็นการแจ้งว่าต้องการจะให้เปิดการใช้งานสำหรับชื่อ โดเมน ชื่ออะไร โดยค่านี้จะเข้าไปอ่านจากการกำหนดค่าใน virtual Hosting ดังนั้นในขั้นตอนที่ผ่านมาในไฟล์คอนฟิก Apache เราต้องกำหนดให้เรียบร้อยก่อน ทั้ง ServerName และ ServerAlias

ในขั้นตอนนี้ มีตัวเลือกอยู่ 2 อย่าง คือแบบไม่ต้องพิมพ์ ชื่อโอสต์ กับพิมพ์ชื่อโอสต์ว่า www

แต่เราสามารถเลือกตั้งหมดได้ โดยการกด Enter ผ่านไปเลยได้

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: your_domain
2: www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

หลังจากที่เรากำหนดขั้นตอนต่างๆๆ ตามที่ระบบแจ้งมาให้จัดการเรียบร้อยแล้ว การปรับแต่ง Certbot เป้นอันว่าเสร็จเรียบร้อย

จะมีข้อความแจ้งรายละเอียดเกี่ยวกับใบรับรอง โดยบอกสถานที่บันทึกและคีย์ที่บันทึกไว้ พร้อมบอกรายละเอียดอื่นๆๆ เป็นอันว่าเสร็จเรียบร้อยในการสร้างในรับรอง CA

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-07-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain.com to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https:/your_domain and https://www.your_domain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ในตอนนี้ หากเราเปิดเว็บไซต์ของเราด้วยคำสั่ง https:// สังเกตุจะมีเครื่องหมายระบบความปลอดภัยเกิดขึ้น จะเป็นรูปล็อกกุญแจที่ address bar

หากต้องการทดสอบว่า มีความปลอดภัยระดับไหน อย่างไร รวมทั้งรายละเอียดต่างๆๆ สามารถเข้าไปทดสอบได้ที่ SSL Labs Server Test 

สำหรับขั้นตอนต่อไปจะเป็นการทดสอบคุณสมบัติการต่ออายุของ Certbot เพือเป็นการยืนยันว่าใบรับรองของเราจะได้รับการต่ออายุอัตโนมัติ ก่อนวันหมดอายุ (ใบรับรองใช้ได้ 90 วัน ต่อครั้ง)

ตรวจสอบว่า Certbot มีการต่ออายุอัตโนมัติหรือไม่

เวลาของใบรับรองที่ออกให้โดย Let’s Encrypt ใช้ได้ในแต่ละครั้งแค่ 90 วัน ดังนั้น จะมีวิธีการที่จะให้มีการต่ออายุใบรับรองอัตโนมัติ

การตรวจสอบสถานะที่ให้บริการในการต่ออายุอัตโนมัติ และเพื่อให้แน่ใจว่ามีการทำงานของสคริดต์ สามารถตรวจสอบได้ตามคำสั่งข้างล่าง

(ลืมบอกไปนิด แพ็คเก็ตชอง Certbot ที่เราติดตั้งจะดูแลในการการต่ออายุโดยใช้สคริป ใน /etc/cron.d  โดยงานบริการดังกล่าวเรียกว่า Certbot.time จะเรียกกันทำงานวันละ 2 ครั้ง)

sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
     Active: active (waiting) since Mon 2022-04-11 20:52:46 UTC; 4min 3s ago
    Trigger: Tue 2022-04-12 00:56:55 UTC; 4h 0min left
   Triggers: ● certbot.service

Apr 11 20:52:46 jammy-encrypt systemd[1]: Started Run certbot twice daily.

To test the renewal process, you can do a dry run with certbot:

sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/your_domain.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for your_domain and www.your_domain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/your_domain/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

หากใช้คำสั่งดังกล่าวแล้วไม่แจ้ง ข้อผิดพลาดอะไรออกมา เท่ากับว่าระบบพร้อมที่จะทำงาน เมื่อมีความจำเป็น Certbot จะต้องอายุใบรับรองของเรา โดยอัตโนมัติ แต่หากมีข้อผิดพลาดอะไร เราจะได้รับเมล์ที่เราแจ้งไป เพื่อเตือนให้เราเข้าไปแก้ไขหรือต่ออายุด้วยตนเอง

สรุป

วิธีการนี้ เป็นวิธีการที่ค่อนข้างจะง่าย และฟรี การปรับแต่งอาจจะมีรายละเอียดมากกว่านี้ แล้วแต่ว่า เราต้องการแบบไหน แต่เท่าที่ทดลองมาแบบนี้ค่อนข้างจะง่ายและไม่ยุ่งยากเลยใช้วิธีการนี้มาตลอด

ส่วนรายละเอียดต่างๆๆ สามารถอ่านรายละเอียดเพิ่มเติมได้จากข้อมูลที่อ้างอิงในการจัดทำบทความนี้ เป็นบทความที่อ้างอิงจากผู้ให้บริการ Cloud Server ที่มีชื่อว่า DigitalOcean ซึ่งเป็นพื้นที่ในการจัดทำหรือซื้อหามาใช้ได้ในราคาที่ไม่แพง รวมทั้งยังสามารถปรับแต่งค่าต่างๆๆ ได้สะดวก โดยไม่ต้องใช้งานผ่านทาง Control panal

Tags:  ,

Leave a Reply

Your email address will not be published. Required fields are marked *