Bảo mật Website của bạn với Let’s Encrypt

Bảo mật Website của bạn với Let’s Encrypt

Cài đặt Railgun – Phần 1: Thiết lập CloudFlare
Thử dùng Envoy của Laravel để viết script deploy cho ứng dụng web
Giới thiệu về Nginx Cache cho các website sử dụng WordPress

Giới thiệu

Let’s Encrypt là một tổ chức chứng nhận (Certificate Authority) mới cung cấp phương pháp để lấy được các chứng chỉ SSL/TLS  (SSL/TLS Certificate) một cách dễ dàng và miễn phí. Bạn có thể dùng các certificate đó để mã hoá website của bạn sử dụng giao thức HTTPS.

Thông thường để có được 1 SSL/TLS certificate được xác nhận, bạn phải mua nó từ các nhà cung cấp như VeriSign, GeoTrust, Codomo, Digicert, … Nhưng với Let’s Encrypt, bạn không phải bỏ ra một đồng chi phí nào cả mà vẫn có thể sở hữu một certificate “xịn”.

Bài viết này sẽ hướng dẫn các bước để sử dụng Certbot, một client app của Let’s Encrypt, để tạo ra 1 certificate phục vụ cho Website của bạn.

Trước khi bắt đầu

Bài viết này sẽ hướng dẫn các bạn sử dụng Certbot trên server sử dụng hệ điều hành Linux CentOS 6 và Webserver Nginx. Khi tiến hành cài đặt, hãy chắc chắn rằng bạn có quyền sudo trên server đó để đảm bảo các bước cài đặt được diễn ra trôi chảy và domain bạn muốn cấp chứng chỉ phải được trỏ vào server.

Bước 1: Cài đặt Certbot

Đầu tiên, hãy update EPEL repository lên version mới nhất

sudo yum install epel-release

Sau khi update xong, cài đặt Certbot

sudo yum install certbot

Đối với các server sử dụng Amazon Linux thì EPEL không chứa package Certbot. Các bạn phải cài đặt thủ công theo cách sau

curl -O https://dl.eff.org/certbot-auto
chmod +x certbot-auto 
sudo mv certbot-auto /usr/local/bin/certbot

Bước 2: Sử dụng Certbot để nhận chứng chỉ

Để nhận certificate, bạn thực hiện câu lệnh

sudo certbot certonly -a webroot --webroot-path=WEBROOT_PATH -d YOUR_DOMAIN

Với YOUR_DOMAIN là tên domain bạn muốn cấp chứng chỉ, WEBROOT_PATH là đường dẫn của Webroot ứng với domain.

Ví dụ, bạn muốn cấp certificate cho domain text.relipasoft.com với webroot là /var/www/vhosts/text.relipasoft.com/ thì bạn thực hiện câu lệnh

sudo certbot certonly -a webroot --webroot-path=/var/www/vhosts/text.relipasoft.com/ -d text.relipasoft.com

Với Amazon Linux, bạn hãy thêm tham số –debug khi thực hiện.

Sẽ có thông báo khi Certbot đã xác nhận domain của bạn là hợp lệ

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/text.relipasoft.com/fullchain.pem. Your
   cert will expire on 2017-08-29. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Sau khi thực hiện xong, Certbot sẽ sinh ra 4 file tại thư mục /etc/letsencrypt/live/YOUR_DOMAIN/ bao gồm:

  • cert.pem: Certificate cho domain của bạn
  • chain.pem: Chain certificate
  • fullchain.pem: Kết hợp của cert.pem  và chain.pem
  • privkey.pem: Private key của certificate

Bước 3: Cấu hình Nginx để sử dụng chứng chỉ

Cấu hình Nginx khá đơn giản, bạn chỉ cần cấu hình ssl_certificate sử dụng fullchain.pemssl_certificate_key sử dụng privkey.pem vào trong block config mà bạn cấu hình với domain mong muốn.

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ví dụ ở block cấu hình cho domain text.relipasoft.com, ta cấu hình như sau:

server_name text.relipasoft.com;

ssl_certificate /etc/letsencrypt/live/text.relipasoft.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/text.relipasoft.com/privkey.pem;

Khởi động lại Nginx và hưởng thành quả

 Bước 4: Làm mới chứng chỉ

Certificate của Let’s Encrypt sẽ hết hạn sau vài tháng kể từ ngày cấp, để làm mới lại certificate, bạn chỉ cần thực hiện câu lệnh

sudo certbot renew

Để không phải lo nghĩ về việc hết hạn certificate, bạn có thể cài đặt crontab để tự động làm mới hàng tháng.

 

Chúc các bạn thành công!

COMMENTS