Edge for Private Cloud v. 4.16.09
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 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 này 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 sẽ tạo các yêu cầu HTTP đến bộ cân bằng tải, sau đó bộ 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.
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 vào các nút trong 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 và tuỳ ý định cấu hình trên kết nối giữa trình cân bằng tải và Cổng thông tin.
Đả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ể cổng nào bạn sử dụng, bạn phải đảm bảo cổng đó đang mở trên nút. 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 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 đượ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 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 theo dõi 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:
- 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 ý: Đảm bảo rằng mật khẩu trên kho khoá và mật khẩu cho khoá giống nhau. - 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.
- 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á. - 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á. 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 hành vi truy cập trái phép.
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 giá trị này bằng cách sử dụng tuỳ chọn -alias cho 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. - Định cấu hình nút Ngăn xếp:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Triển khai các thay đổi cho Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Khởi động lại ngăn xếp BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - 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:
> 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. - Lặp lại trên tất cả các nút Ngăn xếp.
- 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. - Hãy 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 nút Ngăn xếp 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 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 đị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 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ề bộ 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 để truy cập vào Ngăn xếp qua HTTPS như mô tả dưới đây.
Hãy làm theo 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:
- Đị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 dành cho trình cân bằng tải.
- 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 làm giá trị của thuộc tính này: địa chỉ IP hoặc tên DNS và cổng của nút Ngăn xếp API cho một lượt cài đặt nút, hoặc cho trình cân bằng tải nếu bạn có một trình cân bằng tải trước nút API BaaS Stack. - Định cấu hình nút Cổng thông tin:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Khởi động lại Cổng thông tin bằng lệnh:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - 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ủa bạn có thể không cho phép các yêu cầu truy cập vào 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.
Theo mặc định, bạn truy cập vào 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 thông tin 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 đó 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 Portal để 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 đị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 thông tin:
- Tạo tệp khoá và tệp chứng chỉ ở đị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ỉ. - 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 có thể truy cập vào thư mục.
- 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 - 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. - Định cấu hình nút Cổng thông tin:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Triển khai cấu hình:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Khởi động lại Cổng thông tin:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Hãy 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" để đảm bảo 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 đưa một 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ật TLS ngay trên Nút Cổng thông tin hoặc Nút Ngăn xếp, thì 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 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 trang Cổng thông tin cụ thể.
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 các thuộc tính sau trong /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_swagger.basepath=http://localhost:8080 usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
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 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_usergrid.view.management.organizations.organization.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.confirm=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ác với cổng 80 cho HTTP và cổng 443 cho HTTPS.
Sau khi chỉnh sửa usergrid.properties:
- Định cấu hình nút Ngăn xếp:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configuration - Triển khai các thay đổi cho Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Khởi động lại Ngăn xếp BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid khởi động lại - 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 - Triển khai các thay đổi:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - 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