Định cấu hình TLS cho API BaaS

Edge cho đám mây riêng tư phiên bản 4.18.01

TLS (Bảo mật tầng truyền tải có tiền thân là SSL) là công nghệ bảo mật tiêu chuẩn giúp đảm bảo việc truyền tải thông điệp được mã hoá, bảo mật trong môi trường API của bạn. Bạn có thể định cấu hình TLS trên các nút API BaaS Cổng và Ngăn xếp API BaaS.

Hình ảnh sau đây cho thấy một sơ đồ triển khai điển hình cho API BaaS với một nút BaaS Cổng thông tin duy nhất và 3 nút Ngăn xếp API BaaS.

Nhà phát triển sử dụng trình duyệt để đưa ra yêu cầu đối với Cổng thông tin. Theo mặc định, các yêu cầu này sử dụng giao thức HTTP trên cổng 9000 của nút Cổng.

Quá trình triển khai này bao gồm một trình cân bằng tải giữa nút Cổng và Ngăn xếp. Trong cấu hình này, Cổng thông tin gửi yêu cầu HTTP đến trình cân bằng tải, sau đó trình cân bằng tải sẽ chuyển tiếp các yêu cầu này đến một trong các nút Ngăn xếp. Đây là môi trường triển khai được đề xuất cho hệ thống sản xuất.

Tuỳ chọn cấu hình TLS

Khi định cấu hình TLS cho API BaaS, bạn có một số tuỳ chọn:

  • Định cấu hình TLS trên Cổng thông tin và trên trình cân bằng tải cho nút Ngăn xếp

    Trong cấu hình này, nhà phát triển sử dụng giao thức HTTPS để truy cập Cổng thông tin, còn Cổng thông tin chạy trong trình duyệt sẽ sử dụng HTTPS để đưa ra yêu cầu đến các nút Ngăn xếp thông qua trình cân bằng tải. Trình cân bằng tải sử dụng HTTP để truy cập vào các nút Ngăn xếp.
  • Định cấu hình TLS trên Cổng thông tin, trình cân bằng tải và nút Ngăn xếp

    Để tăng cường tính bảo mật, hãy định cấu hình trình cân bằng tải nhằm sử dụng TLS để truy cập vào các nút Ngăn xếp.
  • Định cấu hình TLS trên Cổng thông tin và trên một nút Ngăn xếp

    Trong môi trường nhỏ, chẳng hạn như trong môi trường thử nghiệm hoặc phát triển, bạn có thể chỉ có một nút Ngăn xếp duy nhất, nghĩa là không cần phải thêm trình cân bằng tải. Trong cấu hình này, hãy định cấu hình TLS trên cả nút Cổng và Ngăn xếp.
  • Định cấu hình TLS trên trình cân bằng tải cho Cổng

    Có một lựa chọn không được hiển thị ở trên là sử dụng trình cân bằng tải ở phía trước nút Cổng thông tin. Trong cấu hình đó, bạn có thể định cấu hình TLS trên trình cân bằng tải cũng như trên kết nối giữa trình cân bằng tải và Cổng thông tin (không bắt buộc).

Đảm bảo rằng cổng TLS đang mở

Các quy trình dưới đây định cấu hình TLS trên cổng Cổng mặc định 9000 và nút Ngăn xếp là 8080. Tuy nhiên, bạn có thể thay đổi cổng này nếu muốn.

Bất kể bạn sử dụng cổng nào, bạn phải đảm bảo rằng cổng đó đang mở trên nút. Ví dụ: bạn có thể sử dụng lệnh sau để mở cổng 8443:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

Định cấu hình TLS trên ngăn xếp API BaaS

Theo mặc định, TLS sẽ bị tắt cho Ngăn xếp API BaaS. Sau đó, bạn truy cập API BaaS qua HTTP bằng cách sử dụng địa chỉ IP hoặc tên DNS của nút Ngăn xếp và cổng 8080. Ví dụ:

http://stack_IP:8080

Ngoài ra, bạn có thể định cấu hình quyền truy cập TLS vào BaaS API để có thể truy cập API đó dưới dạng như sau:

https://stack_IP:8080

Trong ví dụ này, bạn định cấu hình quyền truy cập TLS để sử dụng cổng 8080. Tuy nhiên, không bắt buộc phải có cổng 8080 – bạn có thể định cấu hình Ngăn xếp để sử dụng một cổng khác. Yêu cầu duy nhất là tường lửa của bạn phải cho phép lưu lượng truy cập qua cổng đã chỉ định.

Ngăn xếp chỉ có thể hỗ trợ một loại yêu cầu (HTTP hoặc HTTPS) qua một cổng. Do đó, nếu định cấu hình quyền truy cập HTTPS trên cổng 8080, bạn không thể sử dụng HTTP để truy cập cổng 8080. Nếu bạn định cấu hình Ngăn xếp để sử dụng cổng 8443 với HTTPS, thì Ngăn xếp sẽ không còn theo dõi trên cổng 8080 nữa.

Sử dụng quy trình sau đây để định cấu hình quyền truy cập TLS vào Ngăn xếp:

  1. Tạo tệp JKS của kho khoá có chứa chứng chỉ TLS và khoá riêng tư của bạn. Để biết thêm thông tin, hãy xem nội dung Định cấu hình TLS/SSL cho Edge On.
    Lưu ý: Đảm bảo rằng mật khẩu trên kho khoá và mật khẩu cho khoá là giống nhau.
  2. Sao chép tệp JKS của kho khoá vào một thư mục trên nút Ngăn xếp, chẳng hạn như /opt/apigee/customer/application. Người dùng "apigee" phải truy cập được vào thư mục này.
  3. Thay đổi quyền sở hữu tệp JKS thành người dùng "apigee":
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    trong đó keystore.jks là tên của tệp kho khoá của bạn.
  4. Chỉnh sửa tệp /opt/apigee/customer/application/usergrid.properties để đặt các thuộc tính sau, bao gồm cả đường dẫn đến tệp JKS và mật khẩu trên kho khoá và khoá.









    /opt/apigee/customer/application/keystore.jks
    # Sử dụng thuộc tính này để chỉ định một cổng khác.
    # tomcat-server_port=8080


    Cảnh báo: Giá trị mật khẩu phải ở dạng văn bản rõ ràng. Do đó, bạn nên bảo vệ usergrid.properties khỏi hành vi truy cập trái phép.

    Dùng thuộc tính tomcat-server_keyalias để chỉ định bí danh của kho khoá. Bạn đặt bí danh khoá tại thời điểm tạo khoá. Ví dụ: bạn có thể đặt giá trị này bằng cách sử dụng tuỳ chọn -alias cho lệnh keytool.

    Dùng tomcat-server_ssl.protocols để đặt các giao thức TLS mà Ngăn xếp hỗ trợ. Để biết danh sách các giao thức được Java 8 hỗ trợ, hãy xem http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Định cấu hình nút Ngăn xếp:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid cấu hình
  6. Khởi động lại Ngăn xếp BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid khởi động lại
  7. Xác nhận rằng TLS đang hoạt động bằng cách chạy lệnh cURL sau trên nút Ngăn xếp bằng HTTPS:
    > curl -k https://localhost:8080/status -v

    Nếu TLS được định cấu hình chính xác, bạn sẽ thấy một phản hồi chứa thông tin trạng thái.

    Nếu bạn đã định cấu hình quyền truy cập TLS qua một cổng không phải 8080, hãy sửa đổi lệnh ở trên để sử dụng đúng cổng.
  8. Lặp lại trên tất cả các nút Ngăn xếp.
  9. Nếu bạn có một trình cân bằng tải ở phía trước các nút Ngăn xếp, hãy định cấu hình trình cân bằng tải để gửi yêu cầu đến các nút Ngăn xếp qua HTTPS. Hãy xem tài liệu về trình cân bằng tải để biết thêm thông tin.

    Nếu Cổng gửi yêu cầu trực tiếp đến Ngăn xếp, hãy định cấu hình Cổng để truy cập vào Ngăn xếp qua HTTPS như mô tả trong phần sau.
  10. Hãy sử dụng quy trình dưới đây trong phần "Định cấu hình các nút Ngăn xếp API BaaS cho TLS trên Ngăn xếp hoặc Cổng thông tin" để đảm bảo rằng nút Ngăn xếp có đúng URL TLS khi tạo phản hồi của người dùng.

Định cấu hình Cổng để truy cập vào Ngăn xếp qua TLS

Cổng thông tin BaaS chạy trong các chức năng của trình duyệt bằng cách thực hiện lệnh gọi API đến Ngăn xếp BaaS. Nếu định cấu hình Ngăn xếp BaaS để sử dụng TLS, thì bạn cũng phải định cấu hình Cổng thông tin để thực hiện các lệnh gọi đó qua HTTPS.

Quá trình cài đặt API BaaS thường được định cấu hình để:

  • Sử dụng trình cân bằng tải giữa nút Cổng và nút Ngăn xếp

    Định cấu hình trình cân bằng tải để đưa ra yêu cầu đến các nút Ngăn xếp qua HTTPS. Hãy xem tài liệu về trình cân bằng tải để biết thêm thông tin.

    Trong cấu hình này, Cổng có thể truy cập vào trình cân bằng tải qua HTTP hoặc HTTPS, tuỳ thuộc vào cách bạn định cấu hình trình cân bằng tải. Nếu trình cân bằng tải sử dụng TLS, hãy làm theo quy trình dưới đây để định cấu hình Cổng thông tin nhằm gửi yêu cầu đến trình cân bằng tải HTTPS.
  • Yêu cầu Cổng gửi yêu cầu trực tiếp đến Ngăn xếp

    Định cấu hình Cổng để truy cập vào Ngăn xếp qua HTTPS như mô tả bên dưới.

Hãy sử dụng quy trình sau đây để định cấu hình Cổng thông tin API BaaS nhằm thực hiện lệnh gọi API qua HTTPS:

  1. Định cấu hình quyền truy cập TLS trên Ngăn xếp BaaS như mô tả ở trên hoặc trên trình cân bằng tải cho các nút Ngăn xếp theo mô tả trong tài liệu dành cho trình cân bằng tải của bạn.
  2. Chỉnh sửa /opt/apigee/customer/application/portal.properties để đặt thuộc tính sau. Nếu tệp đó không tồn tại, hãy tạo tệp đó:
    baas.cổng.config.overrideUrl=https://stackIP:port

    Chỉ định địa chỉ IP hoặc tên DNS và cổng của nút Ngăn xếp API để cài đặt một nút duy nhất, hoặc của trình cân bằng tải nếu bạn có trình cân bằng tải trước nút Ngăn xếp API BaaS.
  3. Định cấu hình nút Cổng:
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng cấu hình
  4. Khởi động lại Cổng bằng cách dùng lệnh:
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng khởi động lại
  5. Nếu bạn sử dụng chứng chỉ tự ký khi định cấu hình quyền truy cập TLS vào Ngăn xếp ở trên, thì trình duyệt có thể không cho phép các yêu cầu từ Cổng thông tin đối với Ngăn xếp. Nếu bạn thấy lỗi trong trình duyệt cho biết không cho phép truy cập HTTPS vào Ngăn xếp, hãy yêu cầu URL sau đây trong trình duyệt và thêm một ngoại lệ bảo mật để cho phép truy cập:
    https://stackIP:port/status

    Chỉ định địa chỉ IP hoặc tên DNS và cổng của nút Ngăn xếp API hoặc trình cân bằng tải.

Định cấu hình TLS trên Cổng thông tin BaaS của API

Theo mặc định, người dùng truy cập Cổng thông tin bằng cách thực hiện các yêu cầu HTTP chưa mã hóa qua cổng 9000 trên máy chủ Cổng. Bạn có thể định cấu hình cổng thông tin để sử dụng HTTPS cho việc mã hoá dữ liệu gửi đến và đi từ cổng thông tin.

Theo mặc định, bạn truy cập Cổng thông tin qua HTTP bằng cách sử dụng địa chỉ IP hoặc tên DNS của nút Cổng và cổng 9000. Ví dụ:

http://portal_IP:9000

Ngoài ra, bạn có thể định cấu hình quyền truy cập TLS vào Cổng thông tin để có thể truy cập cổng đó dưới dạng:

https://portal_IP:9443

Trong ví dụ này, bạn định cấu hình quyền truy cập TLS để sử dụng cổng 9443. Tuy nhiên, cổng 9443 là không bắt buộc – bạn có thể định cấu hình Cổng để sử dụng một cổng khác.

Cổng thông tin chỉ có thể hỗ trợ một loại yêu cầu (HTTP hoặc HTTPS) trên một cổng duy nhất. Do đó, nếu định cấu hình quyền truy cập HTTPS trên cổng 9000, bạn không thể sử dụng HTTP để truy cập cổng 9000. Nếu bạn định cấu hình Cổng để sử dụng cổng 9443 với HTTPS, thì Cổng sẽ không còn nghe trên cổng 9000 nữa.

Để định cấu hình TLS cho Cổng:

  1. Tạo tệp khoá và tệp chứng chỉ theo định dạng PEM.
    Lưu ý: Đảm bảo rằng khoá hoặc chứng chỉ không có mật khẩu/cụm mật khẩu.
  2. Sao chép các tệp PEM vào một thư mục trên nút Cổng thông tin, chẳng hạn như /opt/apigee/customer/application. Người dùng "apigee" phải truy cập được vào thư mục này.
  3. Thay đổi quyền sở hữu tệp PEM cho người dùng "apigee":
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Chỉnh sửa tệp /opt/apigee/customer/application/portal.properties để đặt các thuộc tính sau. Nếu tệp đó không tồn tại, hãy tạo tệp:
    baas.cổng.SSL=on
    baas.cổng.SSL.SSL


    /opt/apigee/customer/application/defaultcert.pem
    # Sử dụng thuộc tính này để chỉ định một cổng khác.
    # baas.cổng.listen=9000


    Sử dụng baas.portal.ssl.protocols để thiết lập các giao thức TLS mà Cổng hỗ trợ. Để biết danh sách các giao thức được hỗ trợ, hãy xem danh sách các tên giao thức SSL do Nginx xác định: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Định cấu hình nút Cổng:
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng cấu hình
  6. Khởi động lại Cổng:
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng khởi động lại
  7. Hãy sử dụng quy trình bên dưới trong phần "Định cấu hình các nút Ngăn xếp API BaaS cho TLS trên Ngăn xếp hoặc Cổng thông tin" để đảm bảo rằng nút Ngăn xếp có URL TLS chính xác cho Cổng thông tin.

Định cấu hình các nút API BaaS cho TLS trên Ngăn xếp hoặc Cổng thông tin

Nếu đưa một trình cân bằng tải vào trước nút Ngăn xếp hoặc Nút Cổng thông tin hoặc nếu bạn bật TLS trực tiếp trên Cổng hoặc nút Ngăn xếp, bạn phải định cấu hình các nút có URL chính xác để truy cập vào Ngăn xếp và Cổng thông tin. Ví dụ: nút Ngăn xếp yêu cầu thông tin này khi:

  • Đưa một URL vào phản hồi trong các yêu cầu API BaaS.
  • Thêm đường liên kết vào mẫu email khi đặt lại mật khẩu hoặc khi gửi thông báo khác.
  • Chuyển hướng người dùng đến các trang cụ thể trên Cổng thông tin.

Nếu bạn sử dụng trình cân bằng tải trước các nút Ngăn xếp hoặc định cấu hình TLS trên nút Ngăn xếp, hãy thiết lập thuộc tính sau trong /opt/apigee/customer/application/usergrid.properties:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

Thay thế http://localhost:8080 bằng URL của trình cân bằng tải. Nếu trình cân bằng tải được định cấu hình để sử dụng TLS, hãy sử dụng giao thức HTTPS. Bạn chỉ cần thêm cổng đó nếu đang sử dụng một cổng không chuẩn, nghĩa là cổng khác với cổng 80 cho HTTP và cổng 443 cho HTTPS.

Bạn cũng phải đặt thuộc tính sau trong /opt/apigee/customer/application/cổng.properties nếu bạn sử dụng trình cân bằng tải ở phía trước các nút Ngăn xếp:

baas.portal.config.overrideUrl=http://localhost:8080

Thay thế http://localhost:8080 bằng URL của trình cân bằng tải cho Ngăn xếp.

Nếu bạn sử dụng một trình cân bằng tải ở phía trước nút Cổng thông tin hoặc định cấu hình TLS trên nút Ngăn xếp, hãy đặt các thuộc tính sau trong usergrid.properties:

usergrid-deployment_portal.url=http://localhost:9000

Thay thế http://localhost:9000 bằng URL của trình cân bằng tải. Nếu trình cân bằng tải được định cấu hình để sử dụng TLS, hãy sử dụng giao thức HTTPS. Bạn chỉ cần thêm cổng đó nếu đang sử dụng một cổng không chuẩn, nghĩa là cổng nào đó không phải là cổng 80 cho HTTP và cổng 443 cho HTTPS.

Sau khi chỉnh sửa usergrid.properties:

  1. Định cấu hình nút Ngăn xếp:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid cấu hình
  2. Khởi động lại Ngăn xếp BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid khởi động lại
  3. Nếu bạn đã sửa đổi portal.properties, hãy định cấu hình nút Cổng:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng định cấu hình
  4. Khởi động lại Cổng thông tin BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-cổng khởi động lại