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

Edge for Private Cloud v. 4.17.01

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

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

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

Phương thức triển khai này bao gồm một trình cân bằng tải giữa các nút Cổng và Ngăn xếp. Trong cấu hình này, Cổng thông tin gửi các 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 một trong các nút Ngăn xếp. Đây là môi trường triển khai đề xuất cho hệ thống phát hành công khai.

Các tuỳ chọn cấu hình TLS

Khi định cấu hình TLS cho API BaaS, bạn có một số lựa 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 các 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 vào Cổng thông tin và Cổng thông tin chạy trong trình duyệt sử dụng HTTPS để gửi 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 các nút Ngăn xếp.
  • Định cấu hình TLS trên Cổng, trình cân bằng tải và các nút Ngăn xếp

    Để tăng cường bảo mật, hãy định cấu hình trình cân bằng tải để sử dụng TLS nhằm 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 duy nhất

    Trong một 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 thêm bộ 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 thông tin và nút Ngăn xếp.
  • Định cấu hình TLS trên trình cân bằng tải cho Cổng

    Một tuỳ chọn không xuất hiện ở trên là sử dụng trình cân bằng tải trước nút Cổng. 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à Portal (không bắt buộc).

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

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

Bất kể sử dụng cổng là gì, 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 bị tắt cho Ngăn xếp API BaaS. Sau đó, bạn truy cập vào API BaaS qua HTTP bằng cách sử dụng địa chỉ IP hoặc tên DNS của nút Stack 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 API BaaS để có thể truy cập vào API đó ở dạng:

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, bạn không bắt buộc phải sử dụng 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 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 duy nhất. 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 vào 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 nghe trên cổng 8080 nữa.

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

  1. Tạo tệp JKS trong kho khoá 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 bài viết Định cấu hình TLS/SSL cho Edge On Premises.
    Lưu ý: Hãy đảm bảo rằng mật khẩu trên kho khoá và khoá 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 có thể truy cập vào thư mục.
  3. Thay đổi quyền sở hữu của 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á.
  4. Chỉnh sửa tệp /opt/apigee/customer/application/usergrid.properties để thiết lập 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á. Nếu tệp đó không tồn tại, hãy tạo tệp:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Theo mặc định, quyền truy cập TLS sử dụng cổng 8080.
    # 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 thô. Do đó, bạn nên bảo vệ usergrid.properties khỏi bị truy cập trái phép.

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

    Sử dụng tomcat-server_ssl.protocols để đặt giao thức TLS mà Ngăn xếp hỗ trợ. Để biết danh sách các giao thức mà 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 configuration
  6. Khởi động lại ngăn xếp BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Xác nhận rằng TLS đang hoạt động bằng cách chạy lệnh cURL sau đây 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ác với 8080, hãy sửa đổi lệnh ở trên để sử dụng cổng chính xác.
  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 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 để đưa ra yêu cầu cho các nút Ngăn xếp qua HTTPS. Hãy xem tài liệu về bộ cân bằng tải để biết thêm thông tin.

    Nếu Cổng thông tin gửi yêu cầu trực tiếp đến Ngăn xếp, hãy định cấu hình Cổng thông tin để 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 bên dưới trong phần "Định cấu hình nút API BaaS Stack cho TLS trên Stack hoặc Portal" để đảm bảo rằng nút Stack có URL TLS chính xác 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 BaaS chạy trong trình duyệt hoạt động bằng cách thực hiện các 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ự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 các nút Cổng thông tin và Ngăn xếp

    Đị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.

    Trong cấu hình này, Cổng thông tin 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 sử dụng quy trình bên dưới để định cấu hình Cổng nhằm gửi yêu cầu đến trình cân bằng tải của HTTPS.
  • Yêu cầu Cổng thông tin gửi yêu cầu trực tiếp đến Ngăn xếp

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

Hãy làm theo quy trình sau để định cấu hình Cổng API BaaS nhằm thực hiện các 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 bộ cân bằng tải cho các nút ngăn xếp như mô tả trong tài liệu về bộ cân bằng tải.
  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.portal.config.overrideUrl=https://stackIP:port

    Chỉ định giá trị của thuộc tính này là địa chỉ IP hoặc tên DNS và cổng của nút API Stack cho một lượt cài đặt nút hoặc của bộ cân bằng tải nếu bạn có bộ cân bằng tải ở phía trước các nút API BaaS Stack.
  3. Định cấu hình nút Cổng thông tin:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Khởi động lại Cổng thông tin bằng lệnh:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Nếu bạn đã sử dụng một 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ủa bạn có thể không cho phép các yêu cầu gửi đến Ngăn xếp từ Cổng thông tin. 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 trong trình duyệt và thêm một trường hợp 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 bộ cân bằng tải.

Định cấu hình TLS trên Cổng API BaaS

Theo mặc định, người dùng truy cập Cổng thông tin bằng cách gửi các yêu cầu HTTP chưa mã hoá qua cổng 9000 trên máy chủ Cổng thông tin. Bạn có thể định cấu hình cổng thông tin để sử dụng HTTPS nhằm mã hoá dữ liệu gửi đến và 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 vào cổng thông tin đó ở 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, bạn không bắt buộc phải sử dụng cổng 9443. Bạn có thể định cấu hình Portal để sử dụng một cổng khác.

Cổng này chỉ có thể hỗ trợ một loại yêu cầu (HTTP hoặc HTTPS) qua 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, thì 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 thông tin:

  1. Tạo tệp khoá và tệp chứng chỉ theo định dạng PEM.
    Lưu ý: Đảm bảo rằng không có mật khẩu/cụm mật khẩu trên khoá hoặc chứng chỉ.
  2. Sao chép 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 của các tệp PEM thành 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.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Theo mặc định, quyền truy cập TLS sử dụng cổng 9000.
    # Sử dụng thuộc tính này để chỉ định một cổng khác.
    # baas.portal.listen=9000


    Hãy sử dụng baas.portal.ssl.protocols để đặt 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 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 thông tin:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal định cấu hình
  6. Khởi động lại Cổng thông tin:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Hãy sử dụng quy trình bên dưới trong phần "Định cấu hình nút Ngăn xếp API BaaS cho TLS trên Ngăn xếp hoặc Cổng" để đảm bảo rằng nút Ngăn xếp có URL TLS chính xác cho Cổng.

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

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

  • Đưa URL vào phản hồi trong các yêu cầu API BaaS.
  • Thêm đường liên kết trong mẫu email khi đặt lại mật khẩu hoặc 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 bộ 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 đặt 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 bộ 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 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/portal.properties nếu sử dụng bộ cân bằng tải 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 bộ cân bằng tải cho ngăn xếp.

Nếu bạn sử dụng trình cân bằng tải trước nút Cổng 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 cổng không chuẩn, nghĩa là cổng 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 configure
  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 thông tin:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Khởi động lại Cổng thông tin BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal khởi động lại