Cài đặt chứng chỉ SSL Clouflare cho website

Cloudflare là dịch vụ DNS trung gian miễn phí có hỗ trợ CDN (Cloud Delivery Network), giúp điều phối lượng truy cập giữa máy chủ và máy khách thông qua máy chủ trung gian (proxy) của CloudFlare. Ngoài ra Cloudflare cung cấp nhiều thiết lập miễn phí nên rất nhiều webmaster sử dụng.

Bài viết này hướng dẫn bạn kích hoạt chứng chỉ SSL miễn phí của Cloudflare ở mức cao nhất Full (Strict) cho web server sử dụng WordPress, Drupal… Bạn có thể chọn một khoảng thời gian có hiệu lực của chứng chỉ SSL dài lên đến 15 năm cho tên miền chính và bao gồm tất cả các tên miền phụ bằng cách sử dụng ký tự đại diện *.skywirex.com.

Sau khi cài xong SSL, website của bạn sẽ có hình ổ khóa trên thanh công cụ và khi kiểm tra thì sẽ ra thông tin tương tự như sau:

Chứng chỉ SSL của Cloudflare cho skywirex.com

Chứng chỉ SSL của Cloudflare cho skywirex.com

Các loại SSL của CloudFlare

Có ba loại SSL cho website trên Cloudflare: Flexible SSL, Full SSL, Full SSL (strict).

Flexible SSL: Với kiểu SSL này CloudFlare sẽ hỗ trợ người truy cập vào website của bạn thông qua giao thức HTTPS, nhưng dữ liệu gửi từ CloudFlare về máy chủ sẽ không được mã hóa. Bạn không cần phải có chứng chỉ SSL và không cần cài chứng chỉ SSL bên trong server. Có thể sử dụng bất cứ website nào, từ Shared Host đến máy chủ riêng và không cần thiết lập gì thêm.

Full SSL: Với kiểu SSL này CloudFlare sẽ hỗ trợ người truy cập vào website thông qua giao thức HTTPS và dữ liệu từ CloudFlare gửi về máy chủ cũng sẽ được mã hóa. Bạn cần phải có một chứng chỉ SSL, nhưng CloudFlare sẽ không xác thực chứng chỉ này nên bạn có thể sử dụng chứng chỉ tự ký, hoặc tạo chứng chỉ của CloudFlare. Nếu bạn sử dụng chứng chỉ được cung cấp bởi Cloudflare thì hoàn toàn miễn phí. Tuy nhiên để sử chứng chỉ của riêng bạn (ví dụ như Let’s Encrypt) bạn cần phải có tài khoản Pro trên Cloudflare.

Full SSL (strict): Giống như kiểu Full SSL nhưng CloudFlare sẽ xác thực chứng chỉ này. Bạn sẽ được miễn phi khi sử dụng chứng chỉ từ Cloudflare. Tài khoản của bạn phải là Pro mới có thể sử dụng chứng chỉ riêng (đi mua hoặc tạo từ Let’s Encrypt).

Sử dụng ‘Origin Certificate’, bạn có thể tạo mã hóa SSL/TLS đầu cuối giữa cả máy chủ và máy chủ proxy Cloudflare do đó đảm bảo rằng tất cả các kết nối đến máy chủ của bạn đều được mã hóa… Với ‘Origin Certificate’, Cloudflare cho phép bạn tạo các chứng chỉ TLS miễn phí có chữ ký của Cloudflare để cài đặt trên máy chủ gốc của bạn …

Tạo chứng chỉ SSL trên Cloudflare

Để có được chứng chỉ SSL từ Cloudflare thêm tên miền của bạn trên Cloudflare. Trong bảng điều khiển, đến menu SSL /TLS và chọn tab Origin server.

Tạo chứng chỉ SSL

Tạo chứng chỉ SSL

Sau khi tạo và lấy chứng chỉ bạn sẽ có được 3 file .pem .keyorigin-pull-ca.pem, ví dụ:

cloudflare_skywirex.com.key
cloudflare_skywirex.com.pem
origin-pull-ca.pem

Bạn sử dụng 3 file này để cài đặt lên web server. Ở đây thư mục tôi lưu chứng chỉ ssl là /etc/ssl/. Bạn có thể sử dụng lệnh nano để tạo file theo đúng đường dẫn và dán nội dung của những file chứng chỉ SSL vào. Hoặc bạn cũng có thể copy lên thư mục gốc và dùng lệnh di chuyển (mv) vào đúng vị trí

/etc/ssl/cloudflare_skywirex.com.key
/etc/ssl/cloudflare_skywirex.com.pem
/etc/ssl/origin-pull-ca.pem

Cấu hình Nginx với chứng chỉ SSL Cloudflare

Một số VPS có cài sẵn tường lửa mặc định và không cho truy cập cổng 443, do đó bạn cần mở cổng 443 khi thực hiện những thay đổi này.

File default sẽ có nội dung tương tự như sau:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name  skywirex.com www.skywirex.com;
    root   /srv/www;
    index  index.php;

    ssl_certificate /etc/ssl/cloudflare_skywirex.com.pem;
    ssl_certificate_key /etc/ssl/cloudflare_skywirex.com.key;
    ssl_client_certificate /etc/ssl/origin-pull-ca.pem;
    ssl_verify_client on;

    client_max_body_size 100M;
  
    autoindex off;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }
}
sudo systemctl restart nginx

Kích hoạt https trên cloudflare