Tip lấy chứng chỉ SSL từ Let’s Encrypt mà không cần tắt Nginx hoặc Apache

Tip lấy chứng chỉ SSL từ Let’s Encrypt mà không cần tắt Nginx hoặc Apache

Để 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
2
3
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
tar xf lego_*
sudo mv lego /usr/local/bin/

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="me@trien.kim" --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="me@trien.kim" --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
2
3
4
#!/bin/bash

lego --accept-tos --email="me@trien.kim" --domains="trien.kim" --domains="www.trien.kim" --http --http.webroot="/home/domains/trien.kim/public" renew --days 60
service nginx reload

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!

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×