Giới thiệu

Trong bài này mình sẽ hướng dẫn cách đăng ký chứng chỉ TLS/SSL từ Let's Encrypt trên máy chủ Ubuntu 14.04 đang chạy Apache server. Ngoài ra chúng ta cũng sẽ thiết lập việc gia hạn tự động chứng chỉ chỉ thông qua 1 cron job đơn giản.

SSL là gì?

Chứng chỉ SSL là từ viết tắt của Secure Sockets Layer thường được dùng để mã hóa dữ liệu trao đổi giữa máy chủ và máy khách (người dùng), tăng thêm mức độ bảo mật khi người dùng truy cập vào các ứng dụng của bạn. Let's Enscrypt cung cấp 1 cách đơn giản để chúng ta có thể có được chứng chỉ SSL miễn phí.

Chuẩn bị

Chúng ta cần:

  • Một máy chủ cài Ubuntu đăng nhập máy chủ với 1 tài khoản non-root ( tài khoản sudo)
  • Cài sẵn Apache lên máy chủ.

Khi mọi thứ xong xuôi, đăng nhập vào máy chủ sử dụng tài khoản sudo của bạn

Bước 1

Đầu tiên chúng ta tải certbot-auto Let’s Encrypt client:

cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto

Thiết lập quyền thực thi

sudo chmod a+x /usr/local/sbin/certbot-auto

Vậy là certbot-auto đã sẵn sàng

Bước 2: Đăng ký chứng chỉ SSL

Chỉ bằng 1 câu lệnh đơn giản, certbot-auto sẽ tự động đăng ký chứng chỉ SSL cho bạn và đưa cho bạn 1 địa chỉ để bạn xác minh lại đăng ký, ví dụ bạn muốn đăng ký chứng chỉ SSL cho site dinhvanhung.me, chạy lệnh sau:

certbot-auto --apache -d dinhvanhung.me

Chờ 1 lúc để  certbot-auto cài đặt, sau đó sẽ xuất hiện hộp thoại hỏi bạn 1 số cấu hình, ví dụ như nếu bạn đã có SSL cho domain này thì  có muốn đăng ký mới hay gia hạn chứng chỉ không, hoặc bạn có muốn chuyển toàn bộ traffic từ http sang https không? Bạn chỉ việc chọn câu trả lời sau đó Enter là xong.
Sau khi cài đặt xong, hệ thống sẽ lưu certificate files tại /etc/letsencrypt/live. Ngoài ra bạn sẽ nhận được 1 địa chỉ để kiểm tra SSL của bạn đã hoạt động hay chưa

https://www.ssllabs.com/ssltest/analyze.html?d=dinhvanhung.me&latest

Ngay bây giờ bạn có thể truy cập vào tên miền với giao thức https

Thiết lập tự động gia hạn

Mặc định Let's Enscrypt giới hạn 1 chứng chỉ trong 90 ngày, nhưng các bạn nên gia khoảng 2 tháng 1 lần để tránh bị lỗi không mong muốn. certbot-auto có 1 lệnh là renew sẽ tự động kiểm tra các chứng chỉ đã cài đặt và sẽ gia hạn nó nếu ngày hết hạn ít hơn 30 ngày.
Để làm điều này bạn chỉ việc chạy 1 lệnh đơn giản:

certbot-auto renew

Nếu chúng ta vừa tạo mới 1 chứng chỉ thì lệnh trên sẽ chỉ đưa ra thông báo là chứng chỉ của bạn chưa đến hạn phải renew:

Checking for new version...
Requesting root privileges to run letsencrypt...
   /home/me/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/dinhvanhung.me.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Bạn có thể tạo chứng chỉ cho nhiều tên miền của bạn, nhưng chỉ có tên miền gốc được hiển thị ở trên (dinhvanhung.me), nhưng khi gia hạn thì tất cả các tên miền đều được gia hạn.

Để tự động hóa việc gia hạn, bạn tạo 1 cron job để tự động việc này, và nó sẽ tự động gia hạn khi các chứng chỉ còn 30 ngày nữa là hết hạn. Tốt nhất là chúng ta tạo ra 1 cron job chạy hàng tuần hoặc hàng ngày để kiểm tra tự động.
Trong ví dụ này chúng ta sẽ tạo 1 cron job tự động chạy hàng tuần, đầu tiên chúng ta sửa crontab:

sudo crontab -e

Thêm dòng lệnh dưới đây vào

30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log

Lưu và đóng lại, như vậy chúng ta đã tạo xong 1 cron job hàng tuần vào mỗi thứ hai lúc 2:30 sáng sẽ chạy lệnh certbot-auto renew và thông báo log sẽ được ghi vào file /var/log/le-renew.log để chúng ta kiểm tra khi cần.

Kết luận

Như vậy chúng ta đã đăng ký được SSL miễn phí từ Let’s Encrypt cho 1 website chạy trên Apache webserver. Nếu bạn muốn nhận được các cập nhật mới, vui lòng update trên blog của Let's Encrypt.