Free SSL (https)

Let’s Encrypt khởi xướng việc dùng Certificate Authority (CA) miễn phí. Tuy người dùng không thật sự được cấp CA mà việc chứng thực được thông qua ACME protocol nhưng mọi việc vẫn diễn ra suông sẽ.

Nhiều website tiếp sức letsencrypt.org để cấp CA theo nhiều cách khác nhau, nhưng vấn đề lớn nhất là có một giải pháp thuận tiện để gia hạn khi CA sẽ hết hiệu lực sau 90 ngày. Certbot có thể là một giải pháp thuận tiện nhất để vừa đăng ký CA vừa dùng để gia hạn nó một cách tự động qua crontab.

Cài đặt certbot

  • Thêm vào /etc/apt/sources.list.d/sources.list dòng
deb http://ftp.debian.org/debian jessie-backports main
  • Sau đó chạy lệnh
apt-get update
  • Cài đặt certbot
sudo apt-get install certbot -t jessie-backports
  • Đăng ký free SSL
certbot certonly

Cần cung cấp các domain của website (cách nhau khoảng trắng)

 

Nên chọn nơi lưu CA nằm ngoài thư mục web, khi đó certbot sẽ tạo CA trong /etc/letsencrypt

 

Việc tạo lại CA hay thêm domain không ảnh hưởng gì vì Lets Encrypt sẽ cập nhật lại CSDL

  • Việc cuối cùng là cấu hình lại webserver để dùng SSL (https)

Thí dụ, với nginx, sửa lại file /etc/nginx/sites-available/default thêm vào các dòng

        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/yrdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yrdomain.com/privkey.pem;

Ngoài ra, nếu không dùng http nữa, đặt # trước các dòng

        listen 80 default_server;
        listen [::]:80 default_server;

hoặc sửa file default thành

        listen 80 default_server;
        listen [::]:80 default_server;
        server_name yrdomain.com;

        if ($scheme = "http") {
                rewrite ^ https://$host$uri permanent;
        }
        ...

 

Chú thích

  • Kiểm tra cấu hình https bằng ssllabs.com, website phải được xếp loại A đến A+, nếu không được vậy thì xem lại cấu hình SSL, thông thường là do thiếu dhparam
  • Tạo dhparam 4096 bằng câu lệnh sau (có thể mất đến 1/2 giờ) hoặc dhparam 2048 (nhanh hơn)
openssl dhparam -out dhparam4096.pem 4096

Sau đó cấu hình lại nginx

ssl_dhparam /path/to/dhparam4096.pem;
  • Tự động gia hạn CA bằng crontab
00 00 * * 1 /usr/bin/certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" &> /dev/null

 

 

Leave a Comment

Filed under Software

Leave a Reply