Cài đặt chứng chỉ SSL miễn phí với letsencrypt
Bài viết này giới thiệu cách cấu hình SSL certificates miễn phí với letsencrypt. Bao gồm: tạo mới, gia hạn tự động, xóa cấu hình.
- Để tạo mới SSL certificate
docker run --name certbot -v $HOME/letsencrypt:/etc/letsencrypt -p 80:80 --rm -it certbot/certbot certonly --standalone -d carstay.jp --email info@carstay.jp --agree-tos --verbose --no-eff-email
Thay đổi, carstay.jp
và info@carstay.jp
bằng gía trị tương ứng với domain của bạn.
Certificates sẽ được tạo trong $HOME/letsencrypt/live/carstay.jp/
.
- Cấu hình cho server trả về file nằm trong thư mục
$HOME/www/.well-known
khi có request dạnghttp://carstay.jp/.well-known
. Với$HOME
là/root
VD với nginx server
location /.well-known {
root /root/www/;
autoindex off;
}
- Để gia hạn khi server chưa hoạt động, tức không có server phục vụ tại địa cổng 80
docker run --name certbot -v $HOME/letsencrypt:/etc/letsencrypt -v $HOME/www:/www --rm -it certbot/certbot renew --webroot --webroot-path /www
letsencrypt
sẽ gia hạn toàn bộ domain đang được cấu hình mà không cần phải chỉ định tên domain. Những certificate chưa được qúa hạn 90 ngày sẽ không được gia hạn.
- Để gia hạn khi domain đã được hoạt động và có trỏ đến thư mục
$HOME/www/.well-known
khi nhận được request dạnghttp://carstay.jp/.well-known/*
docker run --name certbot -v $HOME/letsencrypt:/etc/letsencrypt -v $HOME/www:/www --rm -it certbot/certbot certonly --webroot --webroot-path /www -d carstay.jp --email info@carstay.jp --agree-tos --verbose --no-eff-email
- Tự động gia hạn vào thời điểm trong ngày. Tuy hạn của các certificate là 90 ngày, nhưng thiết lập được khuyến khích là thử gia hạn khoảng 1 đến 2 lần trong 1 ngày
0 15 * * * perl -e 'sleep int(rand(3600))' && docker run --name certbot -v $HOME/letsencrypt:/etc/letsencrypt -v $HOME/www:/www --rm certbot/certbot renew --webroot --webroot-path /www || curl -X POST -H 'Content-type: application/json' --data '{"text":"Can not renew ssl key on test server"}' <web hook url>
Thay <web hook url>
bằng địa chỉ slack incoming webhook tương ứng.
Cấu hình này sẽ chọn 1 thời điểm random từ 3 giờ chiều tới 4 giờ chiều (UTC) trong ngày, thử gia hạn certificate, gửi thông báo lỗi đến slack nếu như gia hạn không thành công.
Thời điểm 3 giờ chiều được chọn vì múi giờ trên server là UTC, tức 0h Nhật Bản. Giờ này tải trên server không qúa lớn, thích hợp để thực hiện các thao tác chạy thường xuyên
- Để xóa 1 cấu hình certificate, xóa các thư mục
letsencrypt/archive/carstay.jp
,letsencrypt/live/carstay.jp
,letsencrypt/renewal/carstay.jp.conf