Sử dụng SNI với Edge

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 IP địa chỉ và cổng mà không yêu cầu các đích đó sử dụng cùng một chứng chỉ TLS. Khi SNI là được bật trên máy khách, máy khách truyền tên máy chủ của điểm cuối đích trong quá trình khởi tạo bắt tay TLS. Điều đó cho phép máy chủ TLS xác định chứng chỉ TLS nào nên được sử dụng để xác thực yêu cầu.

Ví dụ: nếu mục tiêu của 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 giao thức bắt tay TLS như sau:

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à TLS máy chủ
  • 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:

Hỗ trợ SNI cho yêu cầu đến proxy API trên Cạnh

Hỗ trợ SNI cho các yêu cầu tới proxy API được kiểm soát bởi bí danh máy chủ và ảo máy chủ lưu trữ.

Giới thiệu về mạng ảo máy chủ lưu trữ và bí danh máy chủ

Với Edge, một máy chủ ảo sẽ xác định địa chỉ IP và cổng, hoặc tên và cổng DNS, trên proxy API được hiển thị và theo đó là 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ủ lưu trữ ảo, bạn cũng chỉ định bí danh máy chủ lưu trữ của máy chủ ảo. Thông thường, đây là tên DNS của máy chủ ảo. Là một phần trong quá trình xác định proxy API xử lý yêu cầu này, Bộ định tuyến 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ủ hiện có được xác định bởi tất cả máy chủ ảo.

Tổ hợp bí danh của máy chủ lưu trữ và số cổng của máy chủ ảo phải là duy nhất cho 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ủ ảo có thể sử dụng cùng một số cổng nếu chúng có các bí danh máy chủ khác nhau.

Máy chủ ảo cũng xác định liệu có thể truy cập proxy API bằng giao thức HTTP hay không, hoặc bởi giao thức HTTPS đã mã hoá bằng TLS. Khi định cấu hình máy chủ ảo để sử dụng HTTPS, liên kết máy chủ ảo với một kho khoá có chứa chứng chỉ và khoá riêng tư mà máy chủ ảo trong quá trình bắt tay TLS.

Để biết thêm thông tin về máy chủ ảo, hãy xem:

Cách SNI hoạt động với bí danh máy chủ

SNI cho phép bạn có nhiều máy chủ ảo được xác định trên cùng một cổng, mỗi máy chủ có các máy chủ khác nhau Chứng chỉ và khoá TLS. Sau đó, Edge sẽ xác định máy chủ ảo và cặp chứng chỉ/khoá mà TLS sử dụng, dựa trên server_name trong yêu cầu bắt tay TLS.

Bộ định tuyến cạnh đọc tiện ích server_name trong cơ chế bắt tay TLS yêu cầu, sau đó sử dụng nó để tìm kiếm dựa trên tên đại diện của máy chủ lưu trữ từ tất cả các tên ảo máy chủ lưu trữ. Nếu Bộ định tuyến phát hiện thấy kết quả trùng khớp với bí danh máy chủ lưu trữ, Bộ định tuyến sử dụng chứng chỉ và khoá TLS từ máy chủ ảo được liên kết với bí danh máy chủ lưu trữ. 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 cơ chế bắt tay TLS, bạn có thể xác định một cặp chứng chỉ/khoá mặc định, như được mô tả trong các phần tiếp theo.

Xác định cặp chứng chỉ/khoá mặc định trong Edge cho 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 muốn sử dụng chứng chỉ và khoá riêng tư của riêng họ vào thời điểm triển khai, bạn có thể triển khai API của mình bằng chứng chỉ và khoá Apigee.

Trong Edge dành cho Đám mây, nếu Bộ định tuyến không thể khớp tiêu đề SNI với bí danh máy chủ lưu trữ hoặc nếu ứng dụng không hỗ trợ SNI, sau đó Bộ định tuyến sử dụng chứng chỉ mặc định do Apigee cung cấp, chính là *.apigee.net.

Xác định cặp chứng chỉ/khoá mặc định trong Edge cho Đám mây riêng tư

Trong Edge dành cho Đám mây riêng tư, 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ủ lưu trữ từ tất cả cá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 Bộ đị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 là được xác định bằng kết hợp tên tổ chức, tên môi trường và tên máy chủ ảo, trong biểu mẫu:

orgName_envName_vhName

Bộ định tuyến sử dụng chứng chỉ/khoá từ tổ hợp orgName_envName_vhName mà xuất hiện đầu tiên 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, Bộ định tuyến sử dụng chứng chỉ/khoá của máy chủ ảo có tên defaultexample_prod_default xuất hiện theo thứ tự bảng chữ cái trước example_prod_test.

Cách bật máy chủ ảo mặc định:

  1. Trên nút 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.
  2. 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
  3. Khởi động lại Bộ định tuyến:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. 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õ ràng chứng chỉ/khoá mặc định trên Bộ định tuyến. Sử dụng quy trình sau để xác định giá trị mặc định rõ ràng cặp chứng chỉ/khoá:

  1. Trên nút Bộ định tuyến đầu tiên, 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.
  2. Thay đổi quyền sở hữu của các tệp thành "api. người dùng:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. 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.
  4. 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
  5. Đặt các thuộc tính theo dõi 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
  6. Khởi động lại Bộ định tuyến:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. 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 của Trình xử lý tin nhắn để nhắm mục tiêu đến các điểm cuối trong Apigee Edge để Cloud và cho việc triển khai Đám mây riêng tư. Theo mặc định, SNI được bật trên Trình xử lý thư Edge dành cho Đám mây và bị vô hiệu hoá trong Đám mây riêng tư.

Sử dụng SNI vào phần phụ trợ trong Edge cho Đám mây riêng tư

Đối với Edge dành cho Đám mây riêng tư, để tương thích ngược với các phần phụ trợ mục tiêu hiện có, Theo mặc định, Apigee tắt SNI. Nếu chương trình 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 như mô tả bên dưới cho phiên bản Edge của bạn.

Bạn không cần phải có cấu hình dành riêng cho Edge. Nếu môi trường mục tiêu của bạn được định cấu hình cho SNI, Edge hỗ trợ công cụ này. 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ủ đó đối với yêu cầu bắt tay TLS.

Bật SNI giữa Edge và phần phụ trợ cho phiên bản Edge 4.15.07.0x

Sử dụng quy trình sau để bật SNI:

  1. Trên nút Trình xử lý thư đầu tiên, hãy mở tệp /opt/apigee4/conf/apigee/message-processor/system.properties trong trình chỉnh sửa.
  2. Đặt thuộc tính sau thành true trong system.properties:
    jsse.enableSNIExtension=true
  3. Khởi động lại bộ xử lý thư:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Lặp lại các bước này trên tất cả các Bên xử lý tin nhắn 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

Sử dụng quy trình sau để bật SNI:

  1. Trên nút Trình xử lý thư đầ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.
  2. Thêm thuộc tính sau vào tệp:
    conf_system_jsse.enableSNIExtension=true
  3. Khởi động lại Trình xử lý thư:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Lặp lại các bước này trên tất cả các Bên xử lý tin nhắn còn lại.