Thứ tư, 29/03/2017 | 00:00 GMT+7

Cách bảo mật ứng dụng web nông dân của bạn bằng Let's Encrypt trên Ubuntu 16.04

Bảo vệ các ứng dụng web bằng TLS / SSL từng được coi là chỉ cần thiết đối với các ứng dụng xử lý thông tin nhạy cảm, vì việc nhận được certificate chính thức có chi phí và yêu cầu cài đặt thêm. Let's Encrypt cho phép ta tạo certificate chính thức theo cách tự động mà không tốn bất kỳ chi phí nào, nghĩa là ta có thể thêm lớp bảo mật này vào bất kỳ trang web nào mà không cần đánh đổi.

Rancher quản lý các containers Docker một cách trực quan với console dễ sử dụng. Rancher có một danh mục các ứng dụng phổ biến mà ta có thể triển khai ngay lập tức, bao gồm dịch vụ Let's Encrypt có thể tạo certificate và cũng sẽ quan tâm đến việc gia hạn khi cần thiết. Sau khi tạo, các certificate được lưu trữ trong Rancher và có sẵn để sử dụng mà không có bất kỳ biến chứng nào.

Quá trình cài đặt Let's Encrypt in Rancher bao gồm ba bước chính: Ta triển khai dịch vụ Let's Encrypt, ta áp dụng certificate mà nó tạo ra cho bộ cân bằng tải và ta cài đặt chuyển hướng HTTP sang HTTPS. Hướng dẫn này sẽ hướng dẫn bạn toàn bộ quy trình.

Yêu cầu

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

  • Một server Ubuntu 16.04 1GB có cài đặt Rancher. Để cấu hình điều này, hãy làm theo hướng dẫn Cách quản lý triển khai nhiều nút với Rancher và Máy Docker trên Ubuntu 16.04 . Bạn sẽ tạo các server bổ sung trong hướng dẫn đó, server này sẽ hoạt động như server cho các containers Docker của bạn.
  • Một ứng dụng được triển khai bằng cách sử dụng Rancher sử dụng dịch vụ Cân bằng tải tích hợp sẵn của Rancher. Trong khi bạn có thể làm theo hướng dẫn này với bất kỳ ứng dụng nào, bao gồm cả những ứng dụng trong danh mục Rancher, bạn cũng có thể xem hướng dẫn của ta về Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 16.04 để bắt đầu. Cho dù bạn chọn con đường nào, hãy đảm bảo cấu hình của bạn sử dụng dịch vụ Cân bằng tải tích hợp sẵn của Rancher để chuyển tiếp yêu cầu đến các containers ứng dụng.
  • Tên domain Đủ điều kiện (FQDN) với bản ghi A cho your_domain trỏ đến địa chỉ IP công cộng của server của bạn chạy dịch vụ Rancher Load Balancer. Điều này là bắt buộc vì cách Let's Encrypt xác thực rằng bạn sở hữu domain mà nó đang cấp certificate . Bạn có thể làm theo hướng dẫn Cách cài đặt tên server với DigitalOcean để cấu hình bản ghi này. Đảm bảo rằng bạn có thể xem ứng dụng đã triển khai của bạn tại http:// your_domain trước khi bắt đầu hướng dẫn này.

Bước 1 - Triển khai dịch vụ Let's Encrypt

Ta sẽ triển khai dịch vụ Let's Encrypt dưới dạng containers Docker, dịch vụ này sẽ được lưu trữ trên một trong các server Rancher của ta . Quá trình này bao gồm chọn dịch vụ Let's Encrypt từ danh mục Rancher và điền các thông tin cần thiết. Sau khi hoàn thành bước này, bạn sẽ có một certificate có sẵn trong Rancher. Hơn hết, dịch vụ sẽ tự động gia hạn certificate khi gần hết hạn mà bạn không cần thực hiện thêm bất kỳ hành động nào.

Để bắt đầu, hãy truy cập Danh mục Người chạy bằng cách nhấp vào menu Danh mục ở đầu giao diện user Người xếp hạng. Sau đó tìm kiếm dịch vụ Let's Encrypt . Khi bạn tìm thấy nó, hãy nhấp vào nút Xem chi tiết và làm theo các bước sau để cấu hình dịch vụ:

  1. Chọn version mẫu mới nhất.Hướng dẫn này sử dụng version 0.4.0 .
  2. Đặt tên riêng cho ứng dụng mới. Ta sẽ gọi nó là Chứng chỉ trong hướng dẫn này, nhưng bất kỳ tên nào cũng được.
  3. Chọn tùy chọn Yes cho trường I Agree to Let's Encrypt TOS sau khi đọc thông tin nếu bạn đồng ý với các điều khoản.
  4. Chọn version Sản xuất của API Let's Encrypt.
  5. Nhập địa chỉ email hợp lệ của bạn vào trường Địa chỉ Email của bạn .
  6. Đối với Tên certificate , hãy nhập tên của certificate để bạn có thể dễ dàng xác định nó trong giao diện user của Rancher. Bạn có thể sử dụng domain của bạn cho việc này.
  7. Đối với Tên domain , hãy nhập domain bạn muốn bảo vệ. Nếu bạn muốn bảo vệ nhiều domain , hãy nhập từng domain , phân tách bằng dấu phẩy.
  8. Đối với Thuật toán public key , hãy chọn RSA-2048 mặc định, là thuật toán phổ biến nhất được sử dụng trong các ứng dụng web hoặc chọn một thuật toán phù hợp với nhu cầu của bạn.
  9. Đối với Thời gian gia hạn trong ngày, hãy chọn thời gian trong ngày, theo UTC, nơi bạn muốn gia hạn certificate . Giá trị mặc định là 12 sẽ hoạt động tốt trừ khi bạn có một số ràng buộc cụ thể.
  10. Đối với Phương pháp xác thực domain , hãy chọn HTTP cho hướng dẫn này. Bạn có thể chọn các phương pháp khác phù hợp với nhà cung cấp DNS mà bạn đang sử dụng cho domain của bạn . DigitalOcean có trong danh sách, cùng với Cloudflare, DNSimple, Dyn, Gandi, Ovh, Route53 và Vultr. Tùy chọn HTTP hoạt động dù nhà cung cấp nào và là phương pháp ta sẽ sử dụng cho hướng dẫn này.
  11. Phần còn lại của các trường liên quan đến các nhà cung cấp DNS cụ thể. Vì bạn đã chọn phương thức HTTP , bạn có thể để trống chúng.
  12. Tiếp theo, bỏ chọn hộp kiểm Bắt đầu dịch vụ sau khi tạo . Ta sẽ bắt đầu dịch vụ sau khi thực hiện một số thay đổi cấu hình bổ sung.
  13. Cuối cùng, nhấp vào nút Chạy ở cuối trang để bắt đầu dịch vụ và chờ nó được triển khai.

Tiếp theo, ta cần yêu cầu dịch vụ cân bằng tải của Racher chuyển tiếp các yêu cầu cho /.well-known/acme-challenge tới dịch vụ Chứng chỉ mới của ta . Nếu không có điều này, Let's Encrypt sẽ không thể xác minh ta là chủ sở hữu của domain . Làm theo các bước sau để hoàn tất quy trình:

  1. Tìm dịch vụ cân bằng tải của bạn trong Rancher và nhấp vào nút Nâng cấp / Chỉnh sửa .
  2. Thêm Luật dịch vụ mới.
  3. Đối với luật mới:
    1. Đảm bảo Quyền truy cập được đặt thành Công khai .
    2. Đảm bảo Giao thức được đặt thành HTTP .
    3. Đảm bảo Cổng được đặt thành 80 .
    4. Đặt Đường dẫn thành /.well-known/acme-challenge .
    5. Đặt Mục tiêu cho dịch vụ Chứng chỉ .
  4. Nhấn Mũi tên lên cho dịch vụ mới này đảm bảo đây là dịch vụ đầu tiên trong danh sách.
  5. Nhấn Chỉnh sửa ở cuối màn hình để lưu cấu hình.

Với luật mới được áp dụng, hãy bắt đầu dịch vụ Let's Encrypt:

  1. Tìm ngăn xếp Chứng chỉ của bạn bằng cách chọn menu Ngăn xếp ở đầu giao diện.
  2. Chọn ngăn xếp Chứng chỉ để hiển thị dịch vụ letsencrypt .
  3. Nhấn nút Bắt đầu để bắt đầu dịch vụ.

Đến đây, dịch vụ Let's Encrypt sẽ chạy và một certificate sẽ được tạo. Quá trình này có thể mất từ 5 đến 15 phút.Chọn menu Cơ sở hạ tầng và chọn Chứng chỉ để xem các certificate . Trong một thời gian ngắn, bạn sẽ thấy certificate mới xuất hiện, mặc dù bạn có thể cần phải làm mới trang. Khi bạn nhìn thấy certificate , bạn có thể sử dụng nó với ứng dụng của bạn .

Bước 2 - Liên kết Chứng chỉ với Ứng dụng

Khi certificate Let's Encrypt có sẵn trong Rancher, bạn có thể chọn nó để sử dụng trong dịch vụ Cân bằng tải Rancher. Để làm điều đó, bạn sẽ thay đổi luật trong Bộ cân bằng tải của bạn để sử dụng HTTPS và áp dụng certificate . Làm theo các bước sau để áp dụng các thay đổi cấu hình đó:

  1. Tìm dịch vụ cân bằng tải của bạn trong Rancher và nhấn nút Nâng cấp / Chỉnh sửa để truy cập cài đặt của nó.
  2. Trong phần Luật cổng , hãy tìm mục nhập chuyển tiếp yêu cầu đến ứng dụng của bạn và thay đổi Giao thức thành HTTPS và thay đổi Cổng server yêu cầu thành 443 , đây là cổng mặc định cho HTTPS.
  3. Chuyển đến tab Chấm dứt SSL ở cuối trang và chọn certificate bạn muốn sử dụng trong trường Chứng chỉ . Nếu bạn muốn thêm nhiều certificate , bạn có thể chọn chúng trong trường Chứng chỉ thay thế . Khi bạn chọn một certificate , certificate đó sẽ tự động được liên kết với domain tương ứng.
  4. Nhấp vào nút Tạo ở cuối trang.

Nếu bạn truy cập trang web bằng giao thức HTTPS ( https:// your_domain ), bạn có thể thấy rằng kết nối hiện đã được bảo mật. Nhưng vì bạn đã thay thế cổng 80 bằng cổng 443 , mọi yêu cầu qua HTTP sẽ không hoạt động nữa. Để giải quyết vấn đề này, ta chỉ có thể thêm lại luật cho HTTP và cổng 80 mà ta đã có trước đó, nhưng thay vào đó, ta sẽ điều chỉnh bộ cân bằng tải của bạn để chuyển hướng lưu lượng từ HTTP sang HTTPS. Điều này đảm bảo mọi người luôn truy cập trang web một cách an toàn.

Bước 3 - Chuyển hướng HTTP sang HTTPS

Dịch vụ Rancher Load Balancer có hỗ trợ cài đặt cấu hình HAProxy tùy chỉnh. Ta sẽ sử dụng tính năng đó để bao gồm một số cấu hình sẽ chuyển hướng tất cả lưu lượng truy cập từ HTTP sang HTTPS. Cách tiếp cận trong phần này sử dụng dịch vụ Let's Encrypt mà bạn đã cấu hình trước đó, vì nó hiện đang lắng nghe trên cổng 80 để chuyển tiếp các yêu cầu xác minh domain .

Để cài đặt chuyển hướng, hãy tìm dịch vụ cân bằng tải của bạn trong Rancher và nhấn nút Nâng cấp / Chỉnh sửa để truy cập cài đặt như bạn đã làm trong các bước trước. Khi trang cài đặt xuất hiện, hãy chọn tab Tùy chỉnh haproxy.cfg ở cuối trang.

Thêm đoạn mã sau để tạo chuyển hướng:

Haproxy.cfg tùy chỉnh
frontend 80 acl lepath path_beg -i /.well-known/acme-challenge redirect scheme https code 301 if  !lepath !{ ssl_fc } 

Điều này tạo ra một luật cho trình cân bằng tải chuyển hướng tất cả lưu lượng truy cập đến HTTPS, nhưng bỏ qua các yêu cầu đối với đường dẫn /.well-known/acme-challenge mà ta đã cấu hình để xác minh domain Let's Encrypt. Ta sử dụng code 301 để cho biết ta muốn chuyển hướng vĩnh viễn cho domain này. Để tìm hiểu thêm về cài đặt chuyển hướng, bạn có thể xem tài liệu HAProxy .

Nhấp vào nút Chỉnh sửa ở cuối trang để áp dụng những thay đổi này.

Đến đây, mỗi khi khách truy cập của bạn truy cập trang web thông qua HTTP, họ sẽ được chuyển hướng đến HTTPS, giúp trang web an toàn cho mọi người. Bây giờ ta có thể tiến hành kiểm tra trang web của bạn .

Bước 4 - Kiểm tra cài đặt

Để kiểm tra trang web , hãy mở địa chỉ trong trình duyệt web, sử dụng giao thức HTTP ( http:// your_domain ), sau đó tìm chỉ báo an toàn trong thanh địa chỉ. Bạn cũng có thể kiểm tra nó bằng cách sử dụng trình curl bằng cách chạy lệnh sau, lệnh này sẽ gửi một yêu cầu đến server , thực hiện theo bất kỳ chuyển hướng nào và chỉ trả về các tiêu đề phản hồi:

  • curl -I -L http://your_domain

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

Output
HTTP/1.1 301 Found Cache-Control: no-cache Content-length: 0 Location: https://your_domain/ Connection: close HTTP/1.1 200 OK Cache-Control: public, max-age=0 Content-Type: text/html; charset=utf-8 Vary: Accept-Encoding Date: Sun, 19 Feb 2017 03:42:47 GMT

Khối kết quả đầu tiên hiển thị phản hồi khi lần đầu tiên yêu cầu trang web thông qua HTTP, nói rằng nó đã được tìm thấy nhưng vị trí hiện ở một địa chỉ khác. Lưu ý phần 301 Found , cho bạn biết rằng luật HAProxy mà ta thêm vào đã hoạt động. Phần Location hiển thị vị trí mới của tài nguyên được yêu cầu. Khối kết quả thứ hai cho thấy rằng curl theo sau chuyển hướng đến vị trí mới. Nó cũng cho thấy rằng trang web đã được tìm thấy ở vị trí mới, như được chỉ ra bởi phản hồi 200 OK .

Kết luận

Trong hướng dẫn này, bạn cài đặt HTTPS trên một trang web bằng cách sử dụng Rancher và dịch vụ Let's Encrypt. Việc có được một trang web an toàn giờ đây dễ dàng hơn bao giờ hết và bạn không phải lo lắng về việc liên tục gia hạn certificate của bạn hoặc cài đặt các công cụ khác cho tác vụ. Và với Rancher, bạn có thể mở rộng cơ sở hạ tầng của bạn để đáp ứng nhu cầu trong tương lai.


Tags:

Các tin liên quan

Xây dựng các thành phần web gốc với Vue.js
2017-03-16
Cách sử dụng OpenResty Web Framework cho Nginx trên Ubuntu 16.04
2017-02-28
Roundup: Thư viện thành phần ứng dụng web trên máy tính để bàn Vue.js - Cập nhật Q4 2017
2017-02-23
Cách cài đặt Django Web Framework trên Debian 8
2016-12-21
Cách triển khai ứng dụng web Falcon với Gunicorn và Nginx trên Ubuntu 16.04
2016-11-16
Giới thiệu về Ứng dụng web tiến bộ (PWA): Service Worker & Manifest
2016-11-10
Cách cài đặt Django Web Framework trên Ubuntu 16.04
2016-05-16
Cách triển khai ứng dụng web Clojure trên FreeBSD 10.2
2015-12-22
Cách triển khai ứng dụng web Clojure trên Ubuntu 14.04
2015-11-20
Cách thiết lập web server khả dụng cao với IP giữ và nổi trên Ubuntu 14.04
2015-10-20