Quá trình cấp & gia hạn Letsencrypt SSL hiện có nhiều phương thức như sử dụng Webroot, Standalone, Apache, Nginx, DNS Plugins, manual… Dưới đây là 2 phương thức phổ biến (Stanalone & Webroot) và được sử dụng bởi 2 bashscript thông dụng tại VN: VPSSIM & HOCVPS.

Cá nhân mình thì thích dùng Standalone (Hocvps) sử dụng do đơn giản, tất cả đều được tự động (tự động issue, tạo cronjob tự động renew, cấu hình file conf rõ ràng => việc cập nhật/thay đổi file conf cho các mục đích khác đơn giản hơn so với cách vpssim sử dụng). 

Hocvps letsencrypt

Chế độ Standalone (Hocvps sử dụng)

Standalone là cách issue & gia hạn đơn giản nhất tuy nhiên có một nhược điểm là cần stop web lại trong khoảng 30s để nhường port 80 cho Standalone xác thực & cấp certificate.
Đề gia hạn SSL, bạn vào thư mục cài Letsencrypt & đánh dòng lệnh sau:
certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" 
hoặc: ./Certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start"
Chú ý: Nhớ vào thư mục cài dặt Letsencrypt rồi mới chạy lệnh để tránh command not found.
Tạo cronjob gia hạn tự động Letsencrypt:

Mở file cấu hình crontab:

# EDITOR=nano crontab -e

Copy và paste đoạn code bên dưới vào cửa sổ terminal:

30 2 * * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/le-renew.log

Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát. Bạn nhận được thông báo sau là thành công

crontab: installing new crontab

crontab trên sẽ tự động chạy lệnh gia hạn Let’s Encrypt vào lúc 2h30 hàng ngày và kiểm tra xem đã hết hạn chưa và tiến hành gia hạn. Trước khi gia hạn sẽ stop Nginx, sau đó sẽ start lại ngay lập tức. Như vậy, gần như không ảnh hưởng gì cả đến website.

Vậy là xong.

Một số lỗi thường gặp: 
– Cerbot: command not found => If you have installed certbot using the certbot-auto script, you generally should use ./certbot-auto ... (notice the ./ in the beginning) whenever the documentation says certbot ....Make sure you’re doing this from the directory where you initially downloaded the certbot-auto script.
Accepted solution: You have to be in the certbot folder and address the file certbot-auto directly with ./certbot-auto 
Ghi chú: thư mục cài: /opt/letsencrypt (cần vào thư mục này rồi chạy lệnh – Nếu dùng certbot-auto không được thì dùng ./certbot-auto
1 certificate covers nhiều domain (www & non-www): 
sudo certbot certonly --standalone -d domain.com -d www.domain.com

 

Chế độ webroot (VPSSIM sử dụng)

Để đơn giản quá trình cài đặt SSL từ Letsencrypt, chúng ta nên dùng VPSSIM. Script này có chức năng tự động gia hạn SSL khi chứng chỉ còn hạn 30 ngày nữa, tuy nhiên có một số trường hợp VPSSIM không tự động gia hạn nên chúng ta cần gia hạn bằng tay. Vì vậy, có một số điều cần chú ý khi gia hạn manual SSL, sau khi cài đặt chứng chỉ qua VPSSIM: 

  • VPSSIM sử dụng tool: http://acme.sh
  • VPSSIM sử dụng phương thức webroot để cấp & gia hạn SSL từ Letsencrypt: 

Đây là chế độ mà bắt buộc phải có sẵn một web service, trỏ website trước, vì vậy nó không cần tạo ra 1 máy chủ web ảo chiếm port 443 như chế độ standalone, vì vậy không cần stop web service khi tạo và gia hạn. Việc tạo và gia hạn sẽ được chứng thực thông qua 1 đường link có dạng tenmien.com/.well-known. Đơn giản bạn có thể hiểu nếu trên web của bạn có đường dẫn này thì máy chủ Letsencrypt sẽ xác thực cho bạn và cho phép tạo, gia hạn…

Trong vhost sẽ có thêm đoạn: 

location /.wellknown/ {
              log_not_found off;
              root /usr/local/nginx/html;
để Letsencrypt xác thực (không cần stop Nginx) => thư mục .well-known được VPSSIM thiết lập trong public_html của web.
Trong quá trình sử dụng, mình thấy phương thức này hay bị lỗi (có thể là do hoạt động cập nhật/sửa chữa file conf phục vụ các mục đích khác/cấu hình khác) dẫn đến không chạy được chức năng này.