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.jpinfo@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ạng http://carstay.jp/.well-known. Với $HOME/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ạng http://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