Get SSL Certificates (Let’s Encrypt) trên Ubuntu 22.04

bởi | LPI, Ubuntu

Home » LPI » Ubuntu » Get SSL Certificates (Let’s Encrypt) trên Ubuntu 22.04

Khái niêm

– Nhận SSL Certificates từ Let’s Encrypt nhà cung cấp SSL Certificates miễn phí.
– Ngày hết hạn của cert là 90 ngày.
– Tuy nhiên, Systemd Timer kiểm tra và cập nhập certificates được bao gồm trong is Certbot package và bạn không cần cập nhập thủ công.

Install Certbot Client

– Certbot Client là tool lấy certificates từ Let’s Encrypt.

root@www:~# apt -y install certbot

Nhận certificates

– Cần có Web Server như Apache httpd hoặc Nginx phải đang chạy trên server của bạn.
– Nếu không có Web server đang chạy, bỏ qua phần này và tham khảo phần dưới: Nhận certificates sử dụng tính năng web server của Certbot
– Hơn nữa, Nó cần có khả năng truy cập từ Internet đến server đang hoạt động của bạn trên port 80 vì cần verification từ Let’s Encrypt.

# đối với option [--webroot], sử dụng một directory dưới webroot trên server của bạn như một nơi hoạt động tạm thời.
# -w [thư mục chính] -d [FQDN bạn muốn nhận certs]
# FQDN (Fully Qualified Domain Name-tên miền đầy đủ) : Hostname.Domainname
# nếu bạn muốn nhận được cert cho nhiều hơn2 FQDN, hãy chỉ định tất cả như bên dưới
# ex : nếu nhận [srv.dinhducthanh.com] and [www.srv.dinhducthanh.com]
# ⇒ [-d srv.dinhducthanh.com -d www.srv.dinhducthanh.com]

root@www:~# certbot certonly --webroot -w /var/www/html -d srv.dinhducthanh.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): thanhdd.noc@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# đồng ý với các điều khoản sử dụng
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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
Account registered.
Requesting a certificate for srv.dinhducthanh.com

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

– thành công nếu [Successfully received certificate] được hiển thị
# certs được tạo trong thư mục [/etc/letsencrypt/live/(FQDN)/] directory

root@www:~# ls /etc/letsencrypt/live/
README  srv.dinhducthanh.com
root@www:~# ls /etc/letsencrypt/live/srv.dinhducthanh.com
cert.pem  chain.pem  fullchain.pem  privkey.pem  README
# cert.pem       ⇒ SSL Server cert(bao gồm public-key)
# chain.pem      ⇒ certificate trung cấp
# fullchain.pem  ⇒ file kết hợp cert.pem và chain.pem
# privkey.pem    ⇒ file private-key

Get SSL Certificates (Let's Encrypt) trên Ubuntu 22.04

Nhận certificates sử dụng tính năng web server của Certbot

– Nếu không có Web Server đang chạy trên server của bạn, bạn có thể nhận được certs bằng cách sử dụng tính năng web server của Certbot. Với mọi cách, nó cần có khả năng truy cập từ Internet đến server đang hoạt động của bạn trên port 80 vì cần xác nhận từ Let’s Encrypt.

# với option [--standalone], sử dụng tính năng Web Server của Certbot's
# -d [FQDN bạn muốn nhận certs]
# FQDN (Fully Qualified Domain Name-tên miền đầy đủ) : Hostname.Domainname
# nếu bạn muốn nhận được cert cho nhiều hơn2 FQDN, hãy chỉ định tất cả như bên dưới
# ex : nếu nhận [srv.dinhducthanh.com] and [srv.dinhducthanh.com] 
⇒ chỉ định [-d srv.dinhducthanh.com -d www.dinhducthanh.local]

root@www:~# certbot certonly --standalone -d demo.dinhducthanh.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for demo.dinhducthanh.com

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Renew certificates

– Để cập nhật các certs hiện có theo cách thủ công, sử dụng lệnh phụ [renew].
– Để chạy lệnh phụ [renew], tất cả các certs có hạn dưới 30 ngày đều được cập nhật
– Nếu bạn muốn update các certs đã hết hạn hơn 30 ngày, hãy thêm tùy chọn [–force-renew]
– Tuy nhiên, [certbot] package có systemd timer, vì vậy nó không cần phải chạy thủ công.

# systemd timer script được bao gồm trong Certbot package
root@www:~# systemctl status certbot.timer
*  certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
     Active: active (waiting) since Tue 2022-04-26 01:16:03 UTC; 12min ago
    Trigger: Tue 2022-04-26 18:17:15 UTC; 16h left
   Triggers:  certbot.service

root@www:~# systemctl list-timers certbot.timer --no-pager
NEXT                        LEFT     LAST PASSED UNIT          ACTIVATES
Tue 2022-04-26 18:17:15 UTC 16h left n/a  n/a    certbot.timer certbot.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.
# [renew] được chạy 2 lần mỗi ngày như sau theo mặc định
root@www:~# systemctl cat certbot.timer
# /lib/systemd/system/certbot.timer
[Unit]
Description=Run certbot twice daily

[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true

[Install]
WantedBy=timers.target

root@www:~# systemctl cat certbot.service
# /lib/systemd/system/certbot.service
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://certbot.eff.org/docs
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true
# để cập nhật thủ công, hãy làm như sau
root@www:~# certbot renew

Convert certificates

– Nếu bạn muốn chuyển đổi certificates sang định dạng PKCS12 (PFX) cho Windows, làm như sau.

root@www:~# openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out dlp_for_iis.pfx
Enter Export Password:     # set any export password
Verifying - Enter Export Password:

Tham khảo thêm

Cài đặt Apache2 trên Ubuntu 22.04

Cài đặt DNS Server trên Ubuntu 22.04: External Network

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network và External Network