Để cài đặt chứng chỉ Let’s Encrypt SSL trên server thì bạn có thể sử dụng nhiều cách.
Bạn có thể sử dụng certbot hoặc lego để cài đặt chứng chỉ.
Đa số các ACME client này sẽ cần sử dụng port 80 hoặc 443 để thực hiện xác thực để lấy chứng chỉ.
Và sẽ thường yêu cầu bạn tắt Apache hoặc Nginx. Bằng lệnh service nginx stop
hoặc service apache2 stop
.
Tuy nhiên mình có một tip nhỏ để bạn thực hiện lấy chứng chỉ ssl hoặc renew chứng chỉ ssl mà không cần phải tắt nginx hoặc apache.
Trong bài này mình sẽ sử dụng Lego ACME client để thực hiện việc lấy chứng chỉ SSL.
Tải Lego Client
1 | curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - |
Kiểm tra lại:
1 | lego -v |
Kết quả trả về
1 | lego version 3.5.0 linux/amd64 |
Là thành công
Lấy chứng chỉ SSL
Bạn chạy lệnh sau:
1 | lego --accept-tos --email="[email protected]" --domains="trien.kim" --domains="www.trien.kim" --http --http.webroot="/home/domains/trien.kim/public" run |
Giải thích:
Tham số --http.webroot
sẽ là đường dẫn đến webroot của bạn. Lưu ý, thư mục này phải có quyền ghi, vì lego sẽ ghi các file xác thực vào thực mục .well-known/acme-challenge/
bên trong webroot.
Renew chứng chỉ SSL
1 | lego --accept-tos --email="[email protected]" --domains="trien.kim" --domains="www.trien.kim" --http --http.webroot="/home/domains/trien.kim/public" renew --days 60 |
Bạn có thể dùng cronjob để tự động gia hạn SSL.
Tạo file renew-certificate.sh
với nội dung sau:
1 |
|
Làm cho tập lệnh có quyền thực thi:
1 | sudo chmod +x /home/renew-certificate.sh |
Mở crontab lên sudo crontab -e
và thêm dòng sau vào:
1 | 0 0 1 * * /home/renew-certificate.sh 2> /dev/null |
Done!