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

Edge cho Private Cloud phiên bản 4.17.05

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 thông báo được mã hoá và an toàn trên môi trường API. Bạn có thể định cấu hình TLS trên API BaaS Portal và nút API BaaS Stack.

Hình ảnh sau đây cho thấy một sơ đồ triển khai điển hình của API BaaS thông qua một Cổng BaaS duy nhất và 3 nút API BaaS Stack.

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 giao thức trên cổng 9000 của nút Portal.

Quá trình triển khai này bao gồm một trình cân bằng tải giữa các nút Portal và Stack. Trong phần này , Portal sẽ gửi yêu cầu HTTP đến trình cân bằng tải, còn trình cân bằng tải chuyển tiếp các yêu cầu đến một trong các nút Ngăn xếp. Đây là cách triển khai được đề xuất môi trường 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ố lựa chọn:

  • Định cấu hình TLS trên Portal 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 Cổng thông tin và Cổng thông tin chạy trong trình duyệt sử dụng HTTPS để đưa ra yêu cầu đến các nút Ngăn xếp thông qua tải trình cân bằng. 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 Portal, trình cân bằng tải và nút Stack

    Để 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 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ộ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 một nút Ngăn xếp, nghĩa là không cần thêm trình cân bằng tải. Trong cấu hình này, định cấu hình TLS trên cả nút Cổng và nút Ngăn xếp.
  • Định cấu hình TLS trên trình cân bằng tải cho Portal

    Một lựa chọn không hiển thị ở trên là sử dụng trình cân bằng tải trước nút Portal. Trong đó bạn có thể định cấu hình TLS trên trình cân bằng tải và (không bắt buộc) trên giữa trình cân bằng tải và Portal.

Đả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 Portal mặc định của 9000 và nút Stack của 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. Cho ví dụ: bạn có thể 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 API BaaS qua HTTP bằng cách bằ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 đó trong biểu mẫu:

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 yêu cầu 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 được 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 bạn định cấu hình 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 nghe trên cổng nữa 8080.

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 xem Định cấu hình TLS/SSL cho Edge On Văn phòng.
    Lưu ý: Hãy đảm bảo rằng mật khẩu trên kho khoá và khoá cho giống nhau.
  2. Sao chép tệp JKS 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. "apigee" phải truy cập được vào thư mục người dùng.
  3. Thay đổi quyền sở hữu của tệp JKS thành "API" người dùng:
    > 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 thuộc tính /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á. 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ị password phải ở dạng văn bản rõ ràng. Do đó, bạn nên bảo vệ usergrid.properties khỏi các trường hợp trái phép truy cập.

    Sử dụng 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 đượ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 định 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 đây trên nút Ngăn xếp bằng cách sử dụng HTTPS:
    > cuộn tròn – k https://localhost:8080/status -v

    Nếu TLS được định cấu hình chính xác, bạn sẽ thấy phản hồi có 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 là cổng 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ó 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 đến các nút Ngăn xếp qua HTTPS. Hãy xem tài liệu trên trình 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 Ngăn xếp trên HTTPS như mô tả trong phần sau.
  10. Làm theo 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 thông tin" để đảm bảo rằng nút Ngăn xếp có URL TLS chính xác khi tạo người dùng phản hồi.

Đang định cấu hình Cổng thông tin để truy cập 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 bạn đị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 Portal để 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 thông tin 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 cho các nút Ngăn xếp qua HTTPS. Xem 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 trình cân bằng tải qua HTTP hoặc HTTPS, tuỳ thuộc vào cách đị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 dưới đây để định cấu hình Portal để 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 Ngăn xếp qua HTTPS như mô tả dưới đây.

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

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 không được 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 để sử dụng HTTPS nhằm 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 Cổng thông tin nút 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 này trong biểu mẫu:

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 Cổng thông tin để 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) qua một cổng. Do đó, Nếu bạn định cấu hình 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 thông tin để sử dụng cổng 9443 với HTTPS, thì Cổng sẽ không nghe trên cổng nữa 90.000.

Để đị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. "apigee" phải truy cập được vào thư mục người dùng.
  3. Thay đổi quyền sở hữu các tệp PEM thành "API" người dùng:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Chỉnh sửa thuộc tính /opt/apigee/customer/application/portal.properties để đặt các thuộc tính sau. Nếu tệp đó chưa 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


    Sử dụng baas.portal.ssl.protocols để đặt giao thức TLS mà Cổng thông tin 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 khởi động lại
  7. Làm theo 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 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

Nếu bạn đưa trình cân bằng tải ở trước các nút Ngăn xếp hoặc Cổng thông tin hoặc nếu bạn bật TLS ngay trên nút Cổng thông tin 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ụ: các nút Ngăn xếp yêu cầu thông tin này khi:

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

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 đặ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 lượt tải trình cân bằng. Nếu trình cân bằng tải được định cấu hình để dùng TLS, hãy dùng giao thức HTTPS. Chỉ bạn cần bao gồm cổng nếu bạn đang sử dụng cổng không theo 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.

Bạn cũng phải đặt thuộc tính sau trong /opt/apigee/customer/application/portal.properties 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:

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 trình cân bằng tải ở 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 để dùng TLS, hãy dùng giao thức HTTPS. Bạn chỉ cần thêm cổng nếu bạn đang sử dụng cổng không theo 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 định 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 thông tin:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal đị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-portal khởi động lại