NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
05/05/2023
Lượt xem

Hướng dẫn lưu trữ website bằng Cloudflare và Nginx trên Ubuntu 20.04

05/05/2023
16 phút đọc
Lượt xem

Đánh giá

5/5 - (78 bình chọn)

Bảo mật website là nhiệm vụ vô cùng thiết yếu đảm bảo tính an toàn cho website trong quá trình vận hành và sử dụng. Vậy nên, hướng dẫn này sẽ giúp bảo mật trang web sử dụng Nginx làm Reverse Proxy, thực hiện cấu hình chứng chỉ CA từ Cloudflare. Thiết lập này sẽ giúp ngăn mọi yêu cầu độc hại đến máy chủ của bạn.

Điều kiện để lưu trữ web bằng Cloudflare và Nginx trên Ubuntu 20.04

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

  • Một máy chủ Ubuntu 20.04 đã cấu hình tường lửa, user non-root với quyền sudo và được cài đặt sẵn Nginx.
  • Một tài khoản Cloudflare.
  • Một tên miền đã đăng ký và được thêm vào tài khoản Cloudflare, tên miền đó trỏ đến máy chủ Nginx của bạn.
  • Máy chủ Nginx cần được cấu hình với tên miền bạn đã đăng ký.
Cloudflare
Cloudflare

Bước 1: Tạo chứng chỉ TLS CA

TLS (Transport Layer Security) là giao thức đảm bảo mọi thao tác với dữ liệu của người trên trang web sẽ luôn được mã hóa và an toàn trong quá trình truyền tin. Giao thức này có thể được các tổ chức uy tín, đã được cấp phép và công nhận rộng rãi trên thế giới xác thực và cung cấp cho những người dùng dưới dạng chứng chỉ – certificate. Lúc này, các tổ chức đó sẽ được gọi là CA (Certificate Authority).

Tương tự như các CA khác, Cloudflare 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. Khi sử dụng chứng chỉ TLS do Cloudflare tạo, bạn có thể bảo mật kết nối giữa máy chủ của Cloudflare và máy chủ Nginx của bạn.

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

Create Certificate
Create Certificate

Bạn lựa chọn mặc định Generate private key and CSR with Cloudflare.

Bạn lựa chọn mặc định Generate private key and CSR with Cloudflare
Bạn lựa chọn mặc định Generate private key and CSR with Cloudflare

Nhấp vào Next và bạn sẽ thấy hộp thoại bao gồm 2 mục Origin CertificatePrivate Key. Bạn cần tải xuống cả Origin CertificatePrivate Key từ Cloudflare sang máy chủ của mình. Nhớ sao chép sang máy chủ của bạn trước khi nhấp vào OK và không được chia sẻ chúng với bất kỳ ai.

Tải xuống cả Origin Certificate và Private Key từ Cloudflare sang máy chủ của mình
Tải xuống cả Origin CertificatePrivate Key từ Cloudflare sang máy chủ của mình

Bạn sẽ sử dụng thư mục /etc/ssl trên máy chủ để lưu trữ Origin CertificatePrivate Key vừa rồi. Thư mục này đã tồn tại sẵn trên máy chủ nên bạn chỉ việc sử dụng mà không cần phải tạo mới.

Thực hiện sao chép nội dung của Origin Certificate được hiển thị trong hộp thoại trên trình duyệt của bạn. Tiếp theo, hãy mở file /etc/ssl/cert.pem bằng trình soạn thảo văn bản ưa thích của bạn. Hướng dẫn này sẽ sử dụng nano với câu lệnh như sau:

sudo nano /etc/ssl/cert.pem

Dán nội dung chứng chỉ vào file. Sau đó lưu và thoát khỏi trình chỉnh sửa bằng cách tổ hợp nhấn Ctrl+X, khi được nhắc xác nhận thao tác, bạn nhấn phím Y rồi Enter.

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

sudo nano /etc/ssl/key.pem

Dán private key vào file, lưu file và thoát khỏi trình chỉnh sửa.

Lưu ý: Khi bạn sao chép chứng chỉ và khóa từ bảng điều khiển Cloudflare để dán vào các file có liên quan trên máy chủ, các dòng trống sẽ được chèn vào một cách không xác định. Nginx sẽ coi các chứng chỉ và khóa đó là không hợp lệ. Vì vậy bạn hãy dò lại và chắc chắn rằng không có dòng trống nào trong file.

Cảnh báo: Chứng chỉ Origin CA của Cloudflare chỉ được Cloudflare tin cậy và do đó chỉ nên được sử dụng bởi các máy chủ được kết nối dịch vụ 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, web sẽ không nhận chứng chỉ và có thể gây ra lỗi chứng chỉ không đáng tin cậy.

Ngoài chứng chỉ Origin CA Cloudflare, bạn có thể cài đặt chứng chỉ SSL certificate thay thế. Giao thức SSL cũng có phương thức hoạt động tương tự như TLS khi giúp mã hóa dữ liệu truyền từ máy chủ đến người dùng và ngược lại. Từ đó đảm bảo thông tin luôn được bảo mật và tránh khỏi các cuộc nghe lén hay đánh cắp thông tin từ hacker. Bạn có thể tham khảo ngay các gói SSL hiện có tại Vietnix với mức giá chỉ từ 160.000 VND/Năm.

Bước tiếp theo, bạn cần cập nhật cấu hình Nginx để có thể sử dụng chứng chỉ.

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

Lúc này, bạn đã tạo origin certificate và private key của Cloudflare và lưu các file 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 để sử dụng chúng nhằm bảo mật kết nối giữa các máy chủ của Cloudflare và máy chủ của bạn.

Trước tiên, hãy đảm bảo rằng tường lửa UFW cho phép lưu lượng HTTPS được thông qua bằng cách bật thiết lập Nginx Full để mở cả cổng 80 (HTTP) và cổng 443 (HTTPS):

sudo ufw allow 'Nginx Full'

Thực hiện khởi tạo lại dịch vụ UFW để áp dụng các cấu hình mới:

sudo ufw reload

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 không và UFW có đang hoạt động không:

sudo ufw status

Bạn sẽ thấy output như thế này:

Output Status: active  To                           Action      From --                             ------         ---- OpenSSH               ALLOW     Anywhere Nginx Full              ALLOW     Anywhere OpenSSH (v6)       ALLOW     Anywhere (v6) Nginx Full (v6)       ALLOW     Anywhere (v6)

Tiếp theo, bạn cần điều chỉnh lại server block Nginx. Ban đầu khi cài đặt, Nginx tạo một server block mặc định. Thực hiện xóa block đó đi vì bạn sẽ cấu hình một server block mới với tùy chỉnh theo tên miền sẵn có bằng câu lệnh:

sudo rm /etc/nginx/sites-enabled/default

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

sudo nano /etc/nginx/sites-available/your_domain

Các file sẽ trông giống như sau:

server {         listen 80;         listen [::]:80;          root /var/www/vietnix.com/html;         index index.html index.htm index.nginx-debian.html;          server_name vietnix.com www.vietnix.com;          location / {                 try_files $uri $uri/ =404;         } }

Bạn sẽ phải sửa đổi file cấu hình Nginx để thực hiện các thao tác sau:

  • Nghe trên cổng 80 và chuyển hướng tất cả các yêu cầu sử dụng https.
  • Nghe trên cổng 443 và sử dụng origin certificate và private key đã được thêm vào trong phần trước.

File cấu hình cuối cùng sẽ trông giống như sau:

server {     listen 80;     listen [::]:80;     server_name vietnix.com www.vietnix.com;     return 302 https://$server_name$request_uri; }  server {      # SSL configuration      listen 443 ssl http2;     listen [::]:443 ssl http2;     ssl_certificate         /etc/ssl/cert.pem;     ssl_certificate_key     /etc/ssl/key.pem;      server_name vietnix.com www.vietnix.com;      root /var/www/vietnix.com/html;     index index.html index.htm index.nginx-debian.html;       location / {             try_files $uri $uri/ =404;     } }

Lưu file 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 trong bất kỳ file cấu hình Nginx nào bằng câu lệnh:

sudo nginx -t

Nếu không có vấn đề gì, Nginx sẽ thông báo mọi thứ chính xác, sau đó hãy khởi động lại Nginx để kích hoạt các thay đổi cấu hình mới:

sudo systemctl restart nginx

Bây giờ, hãy chuyển đến phần SSL/TLS của bảng điều khiển Cloudflare, chọn Overview và thay đổi chế độ mã hóa từ SSL/TLS encryption mode thành Full (strict). Lựa chọn 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 của bạn.

Encryption Mode
Encryption Mode

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

sitehavecert
Hướng dẫn lưu trữ website bằng Cloudflare và Nginx trên Ubuntu 20.04 18

Phần tiếp theo 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 giao tiếp với Cloudflare chứ không phải một số máy chủ giả mạo, nặc danh nào khác. Bằng cách đó, Nginx sẽ được cấu hình để chỉ chấp thuậ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ị hủy.

Bước 3: Thiết lập nguồn gốc được xác thực

Chứng chỉ Origin CA sẽ giúp Cloudflare xác minh rằng kết nối với đúng máy chủ gốc. Bước này sẽ sử dụng Xác thực ứng dụng khách TLS (TLS Client Authentication) để 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 ứng dụng khách xác thực, cả hai bên đều phải được cung cấp chứng chỉ để xác minh. Máy chủ Nginx gốc đã được cấu hình để chỉ chấp thuậ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 chưa được chuyển qua Cloudflare sẽ bị loại bỏ. Đ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. Qua đó, đảm bảo cho máy chủ luôn an toàn khỏi các cuộc tấn công không rõ nguồn gốc.

Cloudflare xuất trình các chứng chỉ được CA ký với chứng chỉ sau:

-----BEGIN CERTIFICATE----- MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI 42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3 Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5 lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1 QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz 6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z 0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc 5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/ fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM fVQ6VpyjEXdiIXWUq/o= -----END CERTIFICATE-----

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

Sau đó tạo file /etc/ssl/cloudflare.crt để lưu trữ chứng chỉ của Cloudflare:

sudo nano /etc/ssl/cloudflare.crt

Thêm chứng chỉ vào file. Sau đó, lưu file 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 và thực hiện mở file cấu hình cho miền của bạn:

sudo nano /etc/nginx/sites-available/your_domain

Thêm các chỉ thị ssl_client_certificatessl_verify_client như sau:

. . .  server {      # SSL configuration      listen 443 ssl http2;     listen [::]:443 ssl http2;     ssl_certificate         /etc/ssl/cert.pem;     ssl_certificate_key     /etc/ssl/key.pem;     ssl_client_certificate /etc/ssl/cloudflare.crt;     ssl_verify_client on;      . . .

Lưu file 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 một lần nữa:

sudo nginx -t

Nếu không tìm thấy vấn đề gì, hãy khởi động lại Nginx để kích hoạt các thay đổi cấu hình:

sudo systemctl restart nginx

Cuối cùng, để bật Authenticated Pulls, hãy mở phần SSL/TLS trong bảng điều khiển Cloudflare, điều hướng đến phần Origin Server và bật tùy chọn Authenticated Origin Pulls.

Bật tùy chọn Authenticated Origin Pulls
Bật tùy chọn Authenticated Origin Pulls

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

Để xác minh rằng máy chủ của bạn sẽ chỉ chấp nhận các yêu cầu được ký bởi CA của Cloudflare, hãy tắt tùy chọn Authenticated Origin Pulls 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:

Lỗi 400 Bad Request
Lỗi 400 Bad Request

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

Lưu ý: Hầu hết các trình duyệt sẽ lưu các yêu cầu vào bộ đệm, vì vậy để xem thay đổi ở trên, bạn có thể sử dụng chế độ Duyệt web ẩn danh. Bây giờ trang web đã hoạt động bình thường. Bạn quay lại phần SSL/TLS trong bảng điều khiển Cloudflare, chọn phần Origin Server và bật lại tùy chọn Authenticated Origin Pulls để trở lại cài đặt ban đầu.

Nếu bạn cảm thấy những bước thiết lập cấu hình trên quá phức tạp, không thể thực hiện hoặc thao tác không thành công thì có thể lựa chọn lưu trữ website trên hosting, VPS tốc độ cao của Vietnix. Giải pháp này sẽ giúp bạn có thể dễ dàng lưu trữ và quản lý website của mình một cách thuận tiện, hiệu quả.

Hosting và VPS của Vietnix được thiết kế để đáp ứng các yêu cầu của các website hiện đại. Với tốc độ truy cập nhanh và độ tin cậy cao, bạn có thể yên tâm rằng website của mình sẽ luôn hoạt động một cách ổn định và mượt mà. Vietnix cũng cung cấp các công cụ quản lý website tiện lợi để bạn có thể dễ dàng cập nhật và tùy chỉnh website của mình.

Hơn 10 năm hoạt động, 100.000 dịch vụ được kích hoạt và đồng hành cùng thành công của hơn 50.000 khách hàng cá nhân, doanh nghiệp trên toàn quốc là những minh chứng cho chất lượng dịch vụ tại Vietnix. Liên hệ với Vietnix ngay hôm nay để biết thêm thông tin chi tiết về dịch vụ lưu trữ web và nhận được tư vấn miễn phí về giải pháp phù hợp nhất cho website của bạn.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Thông qua hướng dẫn về điều kiện để lưu trữ web bằng Cloudflare và Nginx trên Ubuntu 20.04 này, bạn sẽ thực hiện được việc bảo mật trang web do Nginx cung cấp bằng cách mã hóa lưu lượng giữa Cloudflare và máy chủ Nginx bằng chứng chỉ CA gốc từ Cloudflare một cách dễ dàng. Bạn cũng có thể sử dụng Authenticated Origin Pulls để đảm bảo rằng chỉ chấp nhận các yêu cầu của máy chủ Cloudflare, ngăn chặn bất kỳ ai khác kết nối trực tiếp với máy chủ Nginx.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG