Sử dụng SNI với Edge

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Chỉ báo tên máy chủ (SNI) cho phép nhiều mục tiêu HTTPS được phân phát 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 máy khách, máy khách sẽ truyền tên máy chủ của điểm cuối đích trong quá trình bắt tay TLS ban đầu. Điều này cho phép máy chủ TLS xác định chứng chỉ TLS nào cần được dùng để xác thực yêu cầu.

Ví dụ: nếu đích đến 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 yêu cầu bắt tay TLS, như minh hoạ dưới đây:

Edge hỗ trợ SNI cho:

  • Yêu cầu từ một ứng dụng khách đến một 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:

Hỗ trợ SNI cho yêu cầu gửi đến proxy API trên Edge

Hỗ trợ SNI cho các yêu cầu đến proxy API do bí danh máy chủ và máy chủ ảo kiểm soát.

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à một proxy API được hiển thị và theo đó, URL mà các ứng dụng dùng để truy cập vào một proxy API. Địa chỉ IP/tên DNS tương ứng với một Bộ định tuyến biên và số cổng là một cổng 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, Bộ đị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ả các máy chủ lưu trữ ảo xác định.

Tổ hợp bí danh máy chủ lưu trữ và số cổng cho máy chủ lưu trữ ảo phải là duy nhất đối với tất cả các máy chủ lưu trữ ảo trong quá trình cài đặt Edge. Điều này 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ủ lưu trữ khác nhau.

Máy chủ ảo cũng xác định xem proxy API được truy cập bằng giao thức HTTP hay bằng giao thức HTTPS được mã hoá bằng TLS. Khi định cấu hình một máy chủ ảo để sử dụng HTTPS, hãy liên kết máy chủ ảo đó với một 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ủ ảo, hãy xem:

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

Thay vì để bắt tay TLS không thành công, bạn có thể xác định một cặp khoá/chứng chỉ mặc định, như mô tả trong các phần tiếp theo.

Xác định cặp khoá/chứng chỉ 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 muốn 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 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 một 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á/chứng chỉ mặc định trong Edge cho Đám mây riêng tư

Trong Edge 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à các bí danh máy chủ lưu trữ từ tất cả các máy chủ lưu trữ ảo, hoặc nếu máy khách 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ủ lưu trữ ả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, theo dạng:

orgName_envName_vhName

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

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

  1. Trên nút Router đầ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ột máy chủ lưu trữ ả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õ chứng chỉ/khoá mặc định trên Bộ định tuyến. Hãy sử dụng quy trình sau để xác định một cặp khoá/chứng chỉ mặc định rõ ràng:

  1. Trên nút Router đầ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 Router 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á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
  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 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
  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 từ Trình xử lý thông báo để nhắm đến các điểm cuối trong Apigee Edge cho việc triển khai Đám mây và Đám mây riêng tư. 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 Private Cloud

Đối với Edge for 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 được định cấu hình để hỗ trợ SNI, thì 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 mình.

Bạn không cần phải thiết lập cấu hình nào khác 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, thì Edge sẽ hỗ trợ SNI. Edge tự động trích xuất tên máy chủ lưu trữ 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:

  1. Trên nút Message Processor đầu tiên, hãy mở tệp /opt/apigee4/conf/apigee/message-processor/system.properties trong một 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 Trình xử lý tin nhắn:
    /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 Trình xử lý thư 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:

  1. Trên nút Message Processor (Bộ xử lý tin nhắn) đầ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ý tin nhắn:
    /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 Trình xử lý thư còn lại.