Hướng dẫn thêm chứng chỉ SSL từ Cloudflare cho Nginx trên Ubuntu 16.04 | 18.04 | 20.04

Khi cài đặt lại hoăc tạo mới 1 trang web sử dụng như WordPress chẳng hạn chạy trên hosting panel thì việc cài đặt thì quá đơn giản rồi, vậy đối với website chạy trên nginx server ubuntu 20.04 thì sao?

Có nhiều hướng dẫn cài đặt chứng chỉ Let’s Encrypt SSL trên server nginx miễn phí hoặc trả phí từ PositiveSSL của ComodoStandard SSL DV của GoDaddy. Trong bài viết này chiasefree hướng dẫn các bạn cài đặt chừng chỉ SSL Cloudflare cho máy chủ Nginx trên Ubuntu 20.04 miễn phí.

Hướng dẫn thêm chứng chỉ SSL từ Cloudflare cho Nginx trên Ubuntu 20.04
Hướng dẫn thêm cho Nginx trên Ubuntu 20.04, Centos 7

Giới thiệu

Cloudflare là một dịch vụ nằm giữa khách truy cập và máy chủ của chủ sở hữu trang web, hoạt động như một proxy ngược cho các trang web. Cloudflare cung cấp Mạng phân phối nội dung (CDN), cũng như giảm thiểu DDoS và dịch vụ máy chủ tên miền phân tán.

Nginx là một máy chủ web phổ biến chịu trách nhiệm lưu trữ một số trang web lớn nhất và có lưu lượng truy cập cao nhất trên internet. Các tổ chức thường cung cấp các trang web bằng Nginx và sử dụng Cloudflare làm nhà cung cấp CDNDNS.

Trong hướng dẫn này, bạn sẽ bảo mật trang web của mình được cung cấp bởi Nginx bằng Origin CA certificate từ Cloudflare và sau đó định cấu hình Nginx để sử dụng các yêu cầu kéo đã được xác thực (authenticated pull requests). Ưu điểm của việc sử dụng thiết lập này là bạn được hưởng lợi từ CDN của Cloudflare và độ phân giải DNS nhanh trong khi đảm bảo rằng tất cả các kết nối đều đi qua Cloudflare. Điều này ngăn chặn bất kỳ yêu cầu độc hại nào đến máy chủ của bạn.

Origin CA certificates là gì?

Sử dụng Origin Certificate Authority (CA)  tạm dịch là chứng chỉ của Tổ chức phát hành chứng chỉ gốc (CA) để mã hóa lưu lượng truy cập giữa Cloudflare và máy chủ web gốc của bạn và giảm mức tiêu thụ băng thông gốc. Sau khi được triển khai, các chứng chỉ này tương thích với chế độ SSL nghiêm ngặt. Xem thêm bài viết khá chi tiết từ trang blog Cloudflare.

Điều kiện cài SSL Cloudflare cho nginx

Để hoàn thành hướng dẫn này, bạn sẽ cần những thứ sau:

  • Một máy chủ đang chạy Ubuntu 16.04, 18.04 hoặc 20.04 trở lên được thiết lập bằng cách làm theo hướng dẫn thiết lập máy chủ với Ubuntu 20.04, bao gồm sudo người dùng không phải root và tường lửa. Xem thêm bải viết
  • Nginx đã được cài đặt trên máy chủ của bạn. Ở bài sau mình sẽ hướng dẫn cách cài đặt Nginx trên Ubuntu 20.04 một cách chi tiết hơn.
  • Một tài khoản Cloudflare.
  • Một tên miền đã đăng ký được thêm vào tài khoản Cloudflare của bạn trỏ đến máy chủ Nginx của bạn.
  • Một Nginx Server Block được định cấu hình cho miền của bạn.

Bước 1 – Tạo 1 Chứng chỉ Origin CA TLS

Cloudflare Origin CA cho phép bạn tạo chứng chỉ TLS miễn phí do Cloudflare ký để cài đặt trên máy chủ Nginx của bạn. Bằng cách sử dụng chứng chỉ TLS do Cloudflare tạo, bạn có thể đảm bảo kết nối giữa các máy chủ của Cloudflare và máy chủ Nginx của mình.

Để tạo chứng chỉ với Origin CA, hãy đăng nhập vào tài khoản Cloudflare của bạn trong trình duyệt web. Chọn tên miền bạn muốn bảo mật và điều hướng đến phần SSL/TLS trên trang tổng quan Cloudflare của bạn. Từ đó, điều hướng đến tab Origin Server và nhấp vào nút Create Certificate:

Hướng dẫn thêm chứng chỉ SSL từ Cloudflare cho Nginx trên Ubuntu 20.04
Chọn Create Certificate để bắt đầu hướng dẫn tạo SSL Cloudflare cho nginx

Để tùy chọn mặc định là Generate private key and CSR with Cloudflare (Tạo khóa riêng tư và CSR với Cloudflare) được chọn.

Hướng dẫn thêm chứng chỉ SSL từ Cloudflare cho Nginx trên Ubuntu 20.04
Tạo Private key

Nhấp vào Next và bạn sẽ thấy hộp thoại có Origin Certificate (chứng chỉ gốc) và Private key (khóa cá nhân). Bạn cần chuyển cả chứng chỉ gốc và khóa cá nhân từ Cloudflare sang máy chủ của mình. Vì lý do bảo mật, thông tin Private key sẽ không được hiển thị lại, vì vậy bạn hãy sao chép khóa này vào máy chủ của bạn trước khi nhấp vào Ok.

hình ảnh minh họa về Origin Certificate và Private key
hình ảnh minh họa về Origin Certificate và Private key

Bạn sẽ sử dụng thư mục /etc/ssl trên máy chủ để giữ chứng chỉ gốc và các tệp khóa riêng tư. Thư mục đã tồn tại trên máy chủ.

Đầu tiên, sao chép nội dung của Origin Certificate được hiển thị trong hộp thoại trong trình duyệt của bạn.

Sau đó, trên máy chủ của bạn, hãy mở /etc/ssl/cert.pem trong trình soạn thảo văn bản ưa thích của bạn:

Dán nội dung chứng chỉ vào tệp. Sau đó, lưu và thoát khỏi trình chỉnh sửa. Nếu bạn đang sử dụng nano, hãy nhấn Ctrl+X, sau đó khi được nhắc, hãy nhấn Y rồi nhấn Enter.

Sau đó, quay lại trình duyệt của bạn và sao chép nội dung của Private key. Mở tệp /etc/ssl/key.pem để chỉnh sửa:

Dán khóa riêng tư vào tệp, lưu tệp và thoát khỏi trình chỉnh sửa.

Lưu ý: Đôi khi, khi bạn sao chép chứng chỉ và khóa từ trang tổng quan Cloudflare và dán vào các tệp có liên quan trên máy chủ, các dòng trống sẽ được chèn. Nginx sẽ coi các chứng chỉ và khóa đó là không hợp lệ, vì vậy hãy đảm bảo rằng không có dòng trống trong tệp của bạn.
Cảnh báo: Cloudflare’s Origin CA Certificate chỉ được Cloudflare tin cậy và do đó chỉ nên được sử dụng bởi các máy chủ gốc được kết nối tích cực với Cloudflare. Nếu tại bất kỳ thời điểm nào bạn tạm dừng hoặc tắt Cloudflare, chứng chỉ Origin CA của bạn sẽ gây ra lỗi chứng chỉ không đáng tin cậy.

Bây giờ bạn đã sao chép khóa và tệp chứng chỉ vào máy chủ của mình, bạn cần cập nhật cấu hình Nginx để sử dụng chúng.

Bước 2 – Cài đặt Chứng chỉ Origin CA trong Nginx

Trong phần trước, bạn đã tạo chứng chỉ gốc và khóa riêng tư bằng trang tổng quan của Cloudflare và lưu các tệp vào máy chủ của mình. Bây giờ, bạn sẽ cập nhật cấu hình Nginx cho trang web của mình để sử dụng chứng chỉ gốc và khóa riêng tư nhằm bảo mật kết nối giữa máy chủ của Cloudflare và máy chủ của bạn.

Đầu tiên, hãy đảm bảo rằng UFW sẽ cho phép lưu lượng HTTPS. Bật Nginx Full, sẽ mở cả port 80 (HTTP) và port 443 (HTTPS):

Bây giờ tải lại UFW:

Cuối cùng, hãy kiểm tra xem các quy tắc mới của bạn có được cho phép và UFW đang hoạt động hay không:

Bạn sẽ thấy một kết quả như thế này:

Bây giờ bạn đã sẵn sàng để điều chỉnh khối máy chủ Nginx của mình. Nginx tạo một khối máy chủ mặc định trong quá trình cài đặt. Xóa nó nếu nó vẫn tồn tại vì bạn đã định cấu hình khối máy chủ tùy chỉnh cho miền của mình:

Tiếp theo, mở tệp cấu hình Nginx cho miền của bạn:

Tệp sẽ trông như thế này:

Bạn sẽ sửa đổi tệp cấu hình Nginx để thực hiện những việc sau:

  • Listen trên port 80 và chuyển hướng tất cả các yêu cầu sử dụng https.
  • Listen trên port 443 và sử dụng chứng chỉ gốc và khóa cá nhân được thêm trong phần trước.

Sửa đổi tệp để tệp trông giống như sau:

Lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, hãy kiểm tra để đảm bảo rằng không có lỗi cú pháp nào trong bất kỳ tệp cấu hình Nginx nào của bạn:

Nếu bạn không tìm thấy sự cố nào, hãy khởi động lại Nginx để kích hoạt các thay đổi của bạn:

Bây giờ, hãy chuyển đến phần SSL/TLS của bảng điều khiển Cloudflare, điều hướng đến tab Overview và thay đổi chế độ mã hóa SSL/TLS thành Full (strict) như hình bên dưới. Điều này thông báo cho Cloudflare luôn mã hóa kết nối giữa Cloudflare và máy chủ Nginx gốc của bạn.

Bây giờ, hãy truy cập trang web của bạn tại https://your_domain để xác minh rằng nó được thiết lập đúng cách. Bạn sẽ thấy trang chủ của mình được hiển thị và trình duyệt sẽ báo cáo rằng trang đó là an toàn.

Trong phần tiếp theo, bạn sẽ thiết lập Authenticated Origin Pulls để xác minh rằng máy chủ gốc của bạn thực sự đang nói chuyện với Cloudflare chứ không phải một số máy chủ khác. Bằng cách đó, Nginx sẽ được định cấu hình để chỉ chấp nhận các yêu cầu sử dụng chứng chỉ ứng dụng khách hợp lệ từ Cloudflare; tất cả các yêu cầu chưa được chuyển qua Cloudflare sẽ bị loại bỏ.

Bước 3 – Thiết lập Authenticated Origin Pulls

Chứng chỉ Origin CA sẽ giúp Cloudflare xác minh rằng nó đang kết nối với máy chủ gốc chính xác. Bước này sẽ sử dụng Xác thực ứng dụng khách TLS để xác minh rằng máy chủ Nginx gốc của bạn đang kết nối với Cloudflare.

Trong quá trình bắt tay TLS do khách hàng xác thực, cả hai bên đều cung cấp chứng chỉ để được xác minh. Máy chủ gốc được định cấu hình để chỉ chấp nhận các yêu cầu sử dụng chứng chỉ ứng dụng khách hợp lệ từ Cloudflare. Các yêu cầu không thông qua Cloudflare sẽ bị loại bỏ vì chúng sẽ không có chứng chỉ của Cloudflare. Điều này có nghĩa là những kẻ tấn công không thể phá vỡ các biện pháp bảo mật của Cloudflare và kết nối trực tiếp với máy chủ Nginx của bạn.

Cloudflare cung cấp các chứng chỉ do CA ký với chứng chỉ sau:

Bạn cũng có thể tải xuống chứng chỉ trực tiếp từ trang tài liệu của Cloudflare.

Sao chép chứng chỉ này.

Sau đó, tạo tệp /etc/ssl/cloudflare.crt tệp để giữ chứng chỉ của Cloudflare:

Thêm chứng chỉ vào tệp. Sau đó, lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ, hãy cập nhật cấu hình Nginx của bạn để sử dụng TLS Authenticated Origin Pulls. Mở tệp cấu hình cho miền của bạn:

Thêm các chỉ thị ssl_client_certificatessl_verify_client như được hiển thị trong ví dụ sau:

Lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, hãy kiểm tra Nginx để đảm bảo rằng không có lỗi cú pháp nào trong cấu hình Nginx của bạn:

Nếu không tìm thấy sự cố nào, hãy khởi động lại Nginx để kích hoạt các thay đổi của bạn:

Cuối cùng, để bật Mã kéo được xác thực, hãy mở phần SSL/TLS trong bảng điều khiển Cloudflare, điều hướng đến tab Origin Server và chuyển đổi tùy chọn Authenticated Origin Pulls.

Bây giờ hãy truy cập trang web của bạn tại https://your_domain để xác minh rằng nó đã được thiết lập đúng cách. Như trước đây, bạn sẽ thấy trang chủ của mình được hiển thị.

Để xác minh rằng máy chủ của bạn sẽ chỉ chấp nhận các yêu cầu do Cloudflare’s CA, hãy chuyển đổi tùy chọn Authenticated Origin Pulls để vô hiệu hóa nó và sau đó tải lại trang web của bạn. Bạn sẽ nhận được thông báo lỗi sau

Máy chủ gốc của bạn phát sinh lỗi nếu Cloudflare’s CA không ký một yêu cầu..

Lưu ý: Hầu hết các trình duyệt sẽ lưu vào bộ nhớ cache các yêu cầu, vì vậy, để thấy sự thay đổi ở trên, bạn có thể sử dụng chế độ duyệt Ẩn danh / Riêng tư trong trình duyệt của mình. Để ngăn Cloudflare lưu vào bộ nhớ đệm các yêu cầu trong khi bạn thiết lập trang web của mình, hãy điều hướng đến Overview trong bảng điều khiển Cloudflare và chuyển đổi Development Mode.

Bây giờ bạn biết nó hoạt động bình thường, hãy quay lại phần SSL/TLS trong bảng điều khiển Cloudflare, điều hướng đến tab Origin Server và bật lại tùy chọn Authenticated Origin Pulls 1 lần nữa.

Kết luận

Trong hướng dẫn thêm chứng chỉ SSL từ Cloudflare cho Nginx trên Ubuntu 16.04 | 18.04 | 20.04 này, bạn đã bảo mật SSl cho trang web được cung cấp bởi Nginx của mình bằng cách mã hóa lưu lượng truy cập giữa Cloudflare và máy chủ Nginx bằng chứng chỉ Origin CA từ Cloudflare. Sau đó, bạn thiết lập Authenticated Origin Pulls trên máy chủ Nginx để đảm bảo rằng nó chỉ chấp nhận các yêu cầu của máy chủ Cloudflare, ngăn không cho bất kỳ ai khác kết nối trực tiếp với máy chủ Nginx.

Bạn nghĩ sao về bài viết này?
+1
0
+1
0
+1
0
+1
0
+1
0

Cập nhật ngày: 19/08/2022 lúc: 20:00


Lưu ý:
→ Vui lòng bình luận bằng tiếng Việt có dấu.
→ Hãy dùng tên và email thật của bạn khi comment.
→ Không sử dụng keyword trong ô Name.
→ Nếu có ý định Spam link thì hãy quên đi nhé.
→ Tất cả bình luận đều được kiểm duyệt vì thế hãy cẩn thận trước khi comment.
Xin cám ơn!

Add Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.