Cấu hình chứng chỉ SSL CloudFlare

Đầu tiên phải nói rằng, sau mấy năm không học ( đúng là bị lão hoá kiến thức về mọi thứ của WordPress lẫn cấu hình từ Cloudflare / VPS / Web server…)

Chính xác mình ngồi cấu hình cho domain mua tại Namecheap (NC) ngay hôm đó thì anh NC bị lỗi cấu hình chuyển đổi DNS làm không tài nào cấu hình đổi DNS của Cloudflare được.

Một số lưu ý:

  • Đây là cấu hình và cách thức sử dụng cho VPS / nếu bạn sử dụng Share hosting có thể liên hệ bên cung cấp (nếu có thể)
  • VPS mình đang sử dụng là Unbuntu 18.04 và Web server là Webinoly (nên các vấn đề cơ bản có thể search google nhanh hơn.
  • Trước khi cấu hình bất kỳ dòng lệnh nào cũng nên copy file conf của Nginx để có vấn đề gì còn backup kịp thời.

OK! Quất thôi

Bước 1: Tạo cái tài khoản CloudFlare cái đã, sau đó add site (domain đang hoạt động hoặc mới mua vào)

Hình minh hoạ cho việc add site (domain)

Bước 2: Thay 2 DNS huyền thoại của Cloudflare dành cho đối tượng xài FREE

Cấu hình SSL

Chuẩn bị

Khi cài đặt WordPress sẽ có bước cài đặt SSL (Let’s Encrypt) là bản thân site bạn đã có chứng chỉ SSL rồi.

Có 2 giải pháp có thể sử dụng

Case 1: SSL của Let’s Encrypt & Cloudflare (Full – Strict)

Đây là cách mình sử dụng cho site backup deepfoo.site, các vấn đề về mặt kỹ thuật hãy cân nhắc khi làm để tránh sai sót.
  • Đầu tiên sau khi có chứng chỉ SSL của Let’s Encrypt rồi bạn cần vào tab DNS của CloudFlare, tại các giá trị của record A, AAA, CName và cột proxy status -> click vào đám mây Cần tắt trạng thái proxied tạm thời.
  • Mặc định trong cấu hình /etc/nginx/sites-available/domain.com sẽ được add thêm các cấu hình cho HTTPS và SSL
  • Kiểm tra 1 vòng site xem có gặp các lỗi error hoặc lỗi DNS hay không, nếu không kích hoạt lại Proxied status.
  • Tại Tab SSL/TLS: Overview chọn Full (Strict), các cấu hình còn lại OFF hoặc mặc định (do Let’s Encrypt đã giải quyết)

Lúc cấu cài đặt WordPress và Let’s Encrypt xong có thể sẽ bị tình trạng như hình !

Case 2: Nếu như bạn muốn cài đặt và sử dụng chứng chỉ của CloudFlare giống mình làm cho site tapbutdao.com thì việc cần làm là

sudo site sample.com -ssl=off
  • Bạn cần đọc thông tin kỹ khi thao tác để có thể revoke hết SSL của Let’s Encrypt ra khỏi hệ thống
  • Khi này phần cấu hình trong /etc/nginx/sites-available/domain.com sẽ được ở cấu hình mặc định dành cho HTTP.
  • Bạn cần chuyển CloudFlare SSL/TLS về Flexible mode
  • Tạo chứng chỉ của CloudFlare tại tab Origin server

Bạn sẽ thấy thông tin sau – để mặc định không chọn gì cả ( trừ khi bạn đang có chứng chỉ mua bên ngoài)

Next, và bạn sẽ có thông tin của Origin Certificate Private key (lưu lại tạm thời ở editor vì bạn sẽ không còn xem được private key này lần tiếp theo)

Lưu ý:

  • Origin Cert lưu thành file.pem – ví dụ: tapbutdao.com.pem
  • Private key lưu thành file.key – ví dụ: tapbutdao.com.key

Upload 2 file trên lên server và để ở thư mục do bạn tạo cho dễ nhớ. ví dụ của mình

/var/www/tapbutdao.com/ssl

  • Giờ cần cấu hình cho nginx
sudo /etc/nginx/sites-available/domain.com

bổ sung thêm trong server thông tin trong cụm server { }

listen 443 ssl http2;
listen [::]:443 ssl http2; 
ssl_certificate /var/www/deepfoo.site/ssl/tapbutdao.com.pem;
ssl_certificate_key /var/www/deepfoo.site/ssl/tapbutdao.com.key;

Note: [::]:443 là listen cho IPv6

Vậy là xong, giờ save lại và cấu hình 1 chút trên CloudFlare tại Edge Certificates

  • Minimum TLS Version chọn 1.2
  • Automatic HTTPS Rewrites ON //mục này tương đương với việc dùng plugin Really Simple SSL

Đồng thời trang wp-admin sẽ hay bị tình trạng direct từ HTTP và HTTPs (do 1 số lý do khách quan), do đó để có thể connect được vào wp-admin sau khi chọn FULL và FULL (strict) bạn có thể dùng Page Rules của CloudFlare)

Và bạn có thể cấu hình SSL/TLS trên CloudFlare mode Full (Strict)

Kiểm tra site lần nữa xem có gặp vấn đề gì không, nếu không thì chúc mừng bạn với chứng chỉ nhà trồng của CloudFlare.

Làm bài test trên Slllab.

Sau đó bạn có thể cấu hình cho HSTS với các bước đơn giản sau.

Trên CloudFlare: tại Tab SSL/TLS – Edge Certificates

  • Always Use HTTPS: ON – nếu bạn không cấu hình .htaccess cho 301 hoặc Nginx redirect 301

Tại chức năng HTTP Strict Transport Security (HSTS) setting như sau

  • Max-Age: 12 months
  • Include subdomains: On
  • Preload: On

Sau đó đi đăng ký trên https://hstspreload.org/ (khoản 1 ngày sẽ hoàn tất)

Đây là kết quả mình đăng ký cho tapbutdao.com

Leave a Comment