Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Chỉ báo tên máy chủ (SNI) cho phép phân phát nhiều mục tiêu HTTPS từ cùng một địa chỉ IP và cổng mà không yêu cầu các mục tiêu đó sử dụng cùng một chứng chỉ TLS. Khi SNI được bật trên một ứng dụng khách, ứng dụng khách sẽ truyền tên máy chủ của điểm cuối mục tiêu trong quá trình bắt tay TLS ban đầu. Điều đó cho phép máy chủ TLS xác định chứng chỉ TLS nào sẽ được dùng để xác thực yêu cầu.
Ví dụ: nếu mục tiêu yêu cầu là https://example.com/request/path
, thì ứng dụng TLS sẽ thêm tiện ích server_name
vào yêu cầu bắt tay TLS, như minh hoạ dưới đây:
Edge hỗ trợ SNI cho:
- Yêu cầu từ ứng dụng khách đến proxy API. Trong trường hợp này, Edge đóng vai trò là máy chủ TLS
- Yêu cầu từ Edge đến phần phụ trợ. Trong trường hợp này, Edge đóng vai trò là ứng dụng TLS.
Để biết thêm thông tin về SNI, hãy xem:
- https://en.wikipedia.org/wiki/Server_Name_Indication
- http://blog.layershift.com/sni-ssl-production-ready/
Hỗ trợ SNI cho yêu cầu đến proxy API trên Edge
Hỗ trợ SNI cho các yêu cầu đến proxy API được kiểm soát bằng bí danh máy chủ và máy chủ ảo.
Giới thiệu về máy chủ ảo và bí danh máy chủ
Với Edge, máy chủ ảo xác định địa chỉ IP và cổng hoặc tên DNS và cổng mà proxy API hiển thị và mở rộng URL mà ứng dụng sử dụng để truy cập proxy API. Địa chỉ IP/tên DNS tương ứng với một Bộ định tuyến cạnh và số cổng là một cổng đang mở trên Bộ định tuyến.
Khi tạo máy chủ ảo, bạn cũng chỉ định bí danh máy chủ của máy chủ ảo.
Thông thường, đây là tên DNS của máy chủ ảo. Trong quá trình xác định proxy API xử lý yêu cầu, Trình định tuyến sẽ so sánh tiêu đề Host
của yêu cầu đến với danh sách các bí danh máy chủ lưu trữ có sẵn do tất cả máy chủ lưu trữ ảo xác định.
Sự kết hợp giữa bí danh máy chủ lưu trữ và số cổng cho máy chủ ảo phải là duy nhất đối với tất cả máy chủ ảo trong quá trình cài đặt Edge. Điều đó có nghĩa là nhiều máy chủ lưu trữ ảo có thể sử dụng cùng một số cổng nếu các máy chủ lưu trữ đó có bí danh khác nhau.
Máy chủ ảo cũng xác định xem bạn truy cập vào proxy API bằng giao thức HTTP hay giao thức HTTPS được mã hoá bằng TLS. Khi định cấu hình máy chủ ảo để sử dụng HTTPS, hãy liên kết máy chủ ảo với kho khoá chứa chứng chỉ và khoá riêng tư mà máy chủ ảo sử dụng trong quá trình bắt tay TLS.
Để biết thêm thông tin về máy chủ lưu trữ ảo, hãy xem:
- Giới thiệu về máy chủ lưu trữ ảo
- Định cấu hình quyền truy cập TLS vào API cho đám mây riêng
- Kho khoá và Kho đáng tin cậy
Cách SNI hoạt động với tên đại diện máy chủ
SNI cho phép bạn xác định nhiều máy chủ ảo trên cùng một cổng, mỗi máy chủ có các chứng chỉ và khoá TLS khác nhau. Sau đó, Edge xác định máy chủ ảo và cặp chứng chỉ/khoá mà TLS sử dụng, dựa trên tiện ích server_name
trong yêu cầu bắt tay TLS.
Bộ định tuyến cạnh đọc tiện ích server_name
trong yêu cầu bắt tay TLS, sau đó sử dụng tiện ích này để tìm kiếm theo bí danh máy chủ từ tất cả máy chủ ảo. Nếu phát hiện thấy một giá trị trùng khớp với bí danh máy chủ, Trình định tuyến sẽ sử dụng chứng chỉ TLS và khoá từ máy chủ ảo được liên kết với bí danh máy chủ. Nếu không tìm thấy kết quả trùng khớp, thì quá trình bắt tay TLS sẽ không thành công.
Thay vì không thực hiện được bắt tay TLS, bạn có thể xác định một cặp chứng chỉ/khoá mặc định, như mô tả trong các phần tiếp theo.
Xác định cặp khoá/giấy chứng nhận mặc định trong Edge for the Cloud
Apigee cung cấp chứng chỉ TLS và khoá riêng tư để hỗ trợ HTTPS. Mặc dù nhiều khách hàng thích sử dụng chứng chỉ và khoá riêng tư của riêng họ tại thời điểm triển khai, nhưng bạn có thể triển khai API bằng cách sử dụng chứng chỉ và khoá Apigee.
Trong Edge for the Cloud, nếu Bộ định tuyến không thể so khớp tiêu đề SNI với bí danh máy chủ lưu trữ hoặc nếu máy khách không hỗ trợ SNI, thì Bộ định tuyến sẽ sử dụng chứng chỉ mặc định do Apigee cung cấp, đó là *.apigee.net.
Xác định cặp khoá/giấy chứng nhận mặc định trong Edge cho Private Cloud
Trong Edge cho Private Cloud, nếu không tìm thấy kết quả trùng khớp giữa tiện ích server_name
và bí danh máy chủ từ tất cả máy chủ ảo hoặc nếu ứng dụng yêu cầu không hỗ trợ SNI, bạn có thể định cấu hình Trình định tuyến để sử dụng chứng chỉ/khoá từ một máy chủ ảo mặc định trên cổng. Máy chủ ảo mặc định được xác định bằng cách kết hợp tên tổ chức, tên môi trường và tên máy chủ ảo, ở dạng:
orgName_envName_vhName
Bộ định tuyến sử dụng chứng chỉ/khoá từ tổ hợp orgName_envName_vhName đứng trước theo thứ tự bảng chữ cái. Ví dụ: yêu cầu đến trên cổng 443 và có hai máy chủ ảo được xác định cho tổ chức example
trong môi trường prod
:
- tên máy chủ ảo =
default
- tên máy chủ ảo =
test
Trong ví dụ này, Trình định tuyến sử dụng chứng chỉ/khoá từ máy chủ ảo có tên default
vì example_prod_default
đứng trước example_prod_test
theo thứ tự bảng chữ cái.
Cách bật máy chủ ảo mặc định:
- Trên nút Router (Bộ định tuyến) đầu tiên, hãy chỉnh sửa
/opt/apigee/customer/application/router.properties
. Nếu tệp đó không tồn tại, hãy tạo tệp. - Thêm thuộc tính sau vào tệp để cho phép bạn xác định máy chủ ảo mặc định:
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
- Khởi động lại bộ định tuyến:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Lặp lại các bước này trên tất cả các Bộ định tuyến còn lại.
Thay vì sử dụng chứng chỉ/khoá từ máy chủ ảo mặc định, bạn có thể xác định rõ chứng chỉ/khoá mặc định trên Trình định tuyến. Hãy sử dụng quy trình sau để xác định một cặp khoá/giấy chứng nhận mặc định rõ ràng:
- Trên nút Bộ định tuyến đầu tiên, hãy sao chép chứng chỉ và khoá riêng tư vào một vị trí trên nút Bộ định tuyến mà người dùng apigee có thể truy cập. Ví dụ:
/opt/apigee/customer/application
. - Thay đổi quyền sở hữu của các tệp thành "apigee. user:
chown apigee:apigee /opt/apigee/customer/application/myCert.pem
chown apigee:apigee /opt/apigee/customer/application/myKey.pem
- Chỉnh sửa
/opt/apigee/customer/application/router.properties
. Nếu tệp đó không tồn tại, hãy tạo tệp. - Thêm các thuộc tính sau vào tệp để cho phép bạn chỉ định chứng chỉ/khoá mặc định:
conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true - Đặt các thuộc tính sau trong
router.properties
để chỉ định vị trí của chứng chỉ và khoá:conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
- Khởi động lại bộ định tuyến:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Lặp lại các bước này trên tất cả các Bộ định tuyến còn lại.
Hỗ trợ SNI cho các yêu cầu từ Edge đến phần phụ trợ
Edge hỗ trợ việc sử dụng SNI từ Trình xử lý thông báo để nhắm đến các điểm cuối trong Apigee Edge cho các bản triển khai trên đám mây và trên đám mây riêng. Theo mặc định, SNI được bật trên Bộ xử lý thông báo Edge cho đám mây và bị tắt trong đám mây riêng.
Sử dụng SNI cho phần phụ trợ trong Edge cho đám mây riêng
Đối với Edge cho Private Cloud, để tương thích ngược với các phần phụ trợ mục tiêu hiện có, Apigee đã tắt SNI theo mặc định. Nếu phần phụ trợ mục tiêu của bạn được định cấu hình để hỗ trợ SNI, bạn có thể bật tính năng này theo mô tả bên dưới cho phiên bản Edge của mình.
Bạn không cần phải định cấu hình thêm cho Edge. Nếu môi trường mục tiêu của bạn được định cấu hình cho SNI, thì Edge sẽ hỗ trợ SNI. Edge tự động trích xuất tên máy chủ từ URL yêu cầu và thêm tên máy chủ đó vào yêu cầu bắt tay TLS.
Bật SNI giữa Edge và phần phụ trợ cho Edge phiên bản 4.15.07.0x
Hãy làm theo quy trình sau để bật SNI:
- Trên nút Trình xử lý thông báo đầu tiên, hãy mở tệp
/opt/apigee4/conf/apigee/message-processor/system.properties
trong trình chỉnh sửa. - Đặt thuộc tính sau thành true trong
system.properties
:jsse.enableSNIExtension=true
- Khởi động lại Trình xử lý thông báo:
/opt/apigee4/bin/apigee-service message-processor restart
- Lặp lại các bước này trên tất cả Trình xử lý thông báo còn lại.
Bật SNI giữa Edge và phần phụ trợ cho Edge phiên bản 4.16.01 trở lên
Hãy làm theo quy trình sau để bật SNI:
- Trên nút Trình xử lý thông báo đầu tiên, hãy chỉnh sửa
/opt/apigee/customer/application/message-processor.properties
. Nếu tệp đó không tồn tại, hãy tạo tệp. - Thêm thuộc tính sau vào tệp:
conf_system_jsse.enableSNIExtension=true
- Khởi động lại Trình xử lý thông báo:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Lặp lại các bước này trên tất cả Trình xử lý thông báo còn lại.