Let’s Encrypt là một tổ chức cung cấp chứng chỉ số SSL/TLS miễn phí để mã hóa thông tin trao đổi trên các trang web. Nó giúp đảm bảo rằng dữ liệu giữa người dùng và máy chủ được bảo vệ khỏi những kẻ tấn công.
Let’s Encrypt tự động hóa quy trình cấp và gia hạn chứng chỉ, giúp dễ dàng triển khai bảo mật trên các trang web
Trong bài viết này mình hướng dẫn anh em cài đặt certificates Let’s Encrypt trên Ubuntu 22.04 LTS.
1. Yêu cầu chuẩn bị
Để thực hiện anh em chuẩn bị cho mình một con máy ảo hoặc VPS hệ điều hành Ubuntu 22.04 LTS.
– Cấu hình tối thiểu:
- Ram: 1-2G
- HDD: 10-20G
– Cài đặt docker và docker-compose. Bạn nào mới bắt đầu thì xem bài viết này
2. Cài đặt Let’s Encrypt
Cài snap, certbot
apt install snap -y
snap install certbot --classic
Cài đặt một web server Apache/Nginx. Ở đây mình cài Apache
apt -y install apache2
Tạo certificates cho domain
certbot certonly --webroot -w /var/www/html -d web.vuihoctech.com
Nhập email và chọn Y cho các câu hỏi.
Cấu hình SSL cho server web
Mặc định khi cài apache web server thì chạy cổng 80. Để kích hoạt cổng 443 chúng ta cần cấu hình như sau:
vi /etc/apache2/sites-available/default-ssl.conf
Chỉnh lại dòng 32,33 và 42
# line 32,33 : change to the certs gotten in section [1]
SSLCertificateFile /etc/letsencrypt/live/web.vuihoctech.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/web.vuihoctech.com/privkey.pem
# line 42 : uncomment and change to the chain-file gotten in section [1]
SSLCertificateChainFile /etc/letsencrypt/live/web.vuihoctech.com/chain.pem
Lưu lại và thoát. Sau đó kích hoạt bằng lệnh sau
a2ensite default-ssl
a2enmod ssl
systemctl restart apache2
Để luôn chuyển tiếp mặc định sang cổng 443 thay vì 80 thì cần cấu hình như sau:
vi /etc/apache2/sites-available/virtual.host.conf
Chỉnh lại dòng RewriteCond %{HTTPS} on
sang RewriteCond %{HTTPS} off
<VirtualHost *:80>
DocumentRoot /var/www/virtual.host
ServerName www.virtual.host
ServerAdmin [email protected]
ErrorLog /var/log/apache2/virtual.host.error.log
CustomLog /var/log/apache2/virtual.host.access.log combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
Cấu hình để tự động cấp mới certificates
Mặc định certificates dùng trong 90 ngày sẽ hết hạn, do đó nếu muốn tự động cấp lại certificates chúng ta cần cài tự động cấp mới khi hết hạn
Tạo một systemd timer script trong Certbot. Đầu tiên kiểm tra systemd timer trước
Chưa có timer nào 0 timers listed
Tạo systemd timer cứ 2h kiểm tra mỗi ngày như sau
vi /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
Tạo một certbot.service
vi /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
Sau đó kích hoạt timer và service certbot
systemctl start certbot.timer
systemctl status certbot.timer
systemctl start certbot.service
systemctl status certbot.service
Kiểm tra lại timer
systemctl list-timers certbot.timer --no-pager
Lúc này đã có một system timer certbot được kích hoạt
3. Lời kết
Trên đây hướng dẫn cài đặt một Certificate Let’s Encrypt trên Ubuntu 22.04 LTS. Chúc anh em thành công!
4. Nguồn tham khảo
Một số nguồn tham khảo khác anh em có thể đọc thêm
Ok bạn