Cách tạo SSL certificate miễn phí với Let's Encrypt

Cách tạo SSL certificate miễn phí với Let's Encrypt



Có nhiều loại chứng chỉ SSL cung cấp các mức độ bảo mật khác nhau. Ví dụ chúng ta có thể mua một chứng chỉ SSL tại namecheap.com với các mức giá khác nhau tùy từng loại. Tuy nhiên trong bài viết này chúng ta sẽ chỉ nói đến loại cơ bản nhất và làm thế nào để có được nó một cách miễn phí 

 


Một số cách để có chứng chỉ SSL miễn phí

- Sử dụng Cloudflare: Đây là một website cung cấp dịch vụ tăng tốc và bảo mật website, họ có cung cấp chứng chỉ SSL ở gói Free. Việc đăng ký rất dễ dàng nên tôi sẽ không hướng dẫn ở đây. Chú ý là với website chỉ phục vụ người dùng tại Việt Nam thì chạy qua Cloudflare có thể sẽ chậm hơn 1 chút do sử dụng CDN server ngoài Việt Nam.

- Sử dụng Let's Encrypt: Sử dụng dịch vụ này chúng ta sẽ tự tạo SSL certificate cho riêng mình và hoàn toàn miễn phí.

Cách tạo SSL certificate với Let's Encrypt

 

Giả sử chúng ta đang sử dụng 1 server Ubuntu với tài khoản truy cập có quyền sudo và sử dụng web server là Nginx.

Bước 1: Cài đặt gói letsencrypt

$ sudo apt-get update
$ sudo apt-get install letsencrypt

Bước 2: Tạo SSL certificate

- Thêm đoạn cấu hình sau vào block server của Nginx để cho phép truy cập vào thư mục ẩn (.well-known) phục vụ cho việc xác thực:

...
   location ~ /.well-known {
        allow all;
   }
...

- Khởi động lại Nginx:

$ sudo systemctl restart nginx

- Tạo SSL certificate (thay example.com bằng tên miền của bạn và /var/www/html là đường dẫn đến thư mục gốc của website):

$ sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d example.com -d www.example.com

- Nếu thành công output sẽ trông như sau: 

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@digitalocean.com
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
...

Bước 3: Cấu hình SSL cho website

- Để tăng tính bảo mật, tạo Strong Diffie-Hellman Group: 

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

- Tạo 1 snippet cho Nginx để có thể tái sử dụng được khi muốn cấu hình cho nhiều website:

$ sudo nano /etc/nginx/snippets/ssl-params.conf

Nội dung file như sau: 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Tham khảo cấu hình SSL bảo mật tại https://cipherli.st/ và https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

- Sửa file cấu hình cho website (thường nằm trong /etc/nginx/sites-enabled hoặc /etc/nginx/conf.d)

Tạo redirect 301 cho block server listen 80 (http) nếu bạn chỉ muốn support https (khi người dùng truy cập với giao thức http sẽ tự động chuyển thành https)

server {
    listen      80;
    server_name example.com www.example.com;
    return      301 https://$server_name$request_uri;
}

Tạo thêm 1 block server listen 443 (https)

server {
    listen      443 ssl http2;

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

    include snippets/ssl-params.conf;

    server_name  example.com www.example.com;

    root /var/www/example.com;

    location ~ /.well-known {
         allow all;
    }

}

Chú ý thay toàn bộ example.com bằng domain của mình và đường dẫn root /var/www/example.com giống bước tạo SSL certificate.

- Sau khi cấu hình xong thì khởi động lại Nginx: 

$ sudo systemctl restart nginx

- Truy cập thử website để xem thành quả hoặc kiểm tra bằng trang sau https://www.ssllabs.com/ssltest/analyze.html

Gia hạn SSL certificate

- SSL tạo theo cách này sẽ hết hạn sau 90 ngày và chúng ta sẽ phải gia hạn bằng lệnh sau:

$ sudo letsencrypt renew

Để tự động hóa việc này chúng ta có thể cấu hình cronjob để tự động gia hạn chứng chỉ.

- Ví dụ cấu hình cronjob để tự động gia hạn mỗi tháng: 

$ sudo crontab -e

Thêm vào 2 dòng sau: 

30 1 1 * * /usr/bin/letsencrypt renew >> /var/log/letsencrypt/renew.log
35 1 1 * * /bin/systemctl reload nginx

Xong, vậy là website của chúng ta đã có thể truy cập qua giao thức https.

Theo techmaster.vn


Ngày đăng: 15 April 2017 2647 lượt đọc


Bài viết liên quan

10 hành vi dịch chuyển  của thế hệ Z các Marketer nên biết
Trình gỡ lỗi chia sẻ trên zalo
Bật mí 21 nguồn tìm kiếm thông tin report insights
Khảo sát hành vi và thói quen mua sắm trên kênh Social của người dùng Việt Nam
Bí quyết Affiliate - Trăm nghe không bằng một thấy
LEADERSHIP LÀ GÌ?
LEADERSHIP LÀ GÌ?
26 April 2017