Định cấu hình SNI giữa bộ xử lý thông báo Edge và máy chủ phụ trợ

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áy chủ phụ trợ 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áy chủ phụ trợ đó sử dụng cùng một chứng chỉ TLS. Đây là một phần mở rộng của giao thức TLS. Khi SNI được bật trên một ứng dụng, ứng dụng sẽ truyền tên máy chủ của máy chủ phụ trợ 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 nên được dùng để xác thực yêu cầu từ ứng dụng.

Theo mặc định, SNI bị vô hiệu hoá trên thành phần Message Processor trong Edge cho Đám mây riêng tư để đảm bảo khả năng tương thích ngược với các máy chủ phụ trợ hiện có. Nếu máy chủ phụ trợ của bạn được định cấu hình để hỗ trợ SNI, thì bạn cần bật SNI trên thành phần Message Processor. Nếu không, các yêu cầu API thông qua Apigee Edge sẽ không thành công với TLS Handshake Failures (Lỗi bắt tay TLS).

Tài liệu này giải thích cách thực hiện những thao tác sau:

Trước khi bắt đầu

Xác định máy chủ đã bật SNI

Phần này mô tả cách xác định xem máy chủ phụ trợ có được bật SNI hay không.

  1. Thực thi lệnh openssl và cố gắng kết nối với tên máy chủ có liên quan (Bộ định tuyến biên hoặc máy chủ phụ trợ) mà không truyền tên máy chủ, như minh hoạ dưới đây:
    openssl s_client -connect hostname:port
  2. Bạn có thể nhận được các chứng chỉ và đôi khi có thể thấy lỗi bắt tay trong lệnh openssl, như minh hoạ dưới đây:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
  3. Thực thi lệnh openssl và thử kết nối với tên máy chủ có liên quan (Bộ định tuyến biên hoặc máy chủ phụ trợ) bằng cách truyền tên máy chủ như minh hoạ dưới đây:
    openssl s_client -connect hostname:port -servername hostname
  4. Nếu bạn gặp lỗi bắt tay ở bước 1 hoặc nhận được các chứng chỉ khác nhau ở bước 1 và bước 2, thì điều đó có nghĩa là Máy chủ được chỉ định đã bật SNI.
  5. Nếu muốn xác minh cho nhiều máy chủ phụ trợ, bạn cần lặp lại các bước trên cho từng máy chủ phụ trợ.

Nếu phát hiện thấy một hoặc nhiều máy chủ phụ trợ có bật SNI, thì bạn cần bật SNI trên thành phần Message Processor (Trình xử lý thông báo) như giải thích bên dưới. Nếu không, các yêu cầu API thông qua Apigee Edge sẽ không thành công kèm theo Lỗi bắt tay TLS.

Bật SNI giữa Trình xử lý thông báo Edge và máy chủ phụ trợ

Phần này giải thích cách bật SNI giữa Trình xử lý thông báo Edge và máy chủ phụ trợ. Bạn có thể bật SNI thông qua thuộc tính jsse.enableSNIExtension trên thành phần Message Processor. Để định cấu hình bất kỳ thuộc tính nào trên Trình xử lý thông báo, hãy sử dụng mã thông báo theo cú pháp được mô tả trong phần Cách định cấu hình Edge.

Để bật SNI trên Trình xử lý thông báo, hãy thực hiện các bước sau:

  1. Tìm mã thông báo cho thuộc tính jsse.enableSNIExtension
  2. Bật SNI trên Trình xử lý tin nhắn

Tìm mã thông báo cho tài sản jsse.enableSNIExtension

Các bước sau đây mô tả cách xác định vị trí mã thông báo cho thuộc tính jsse.enableSNIExtension:

  1. Tìm thuộc tính jsse.enableSNIExtension trong thư mục nguồn Message Processor /opt/apigee/edge-message-processor/source bằng lệnh sau:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
  2. Kết quả của lệnh này cho thấy mã thông báo cho thuộc tính jsse.enableSNIExtension của Message Processor như sau:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}

    Trong đó, chuỗi giữa các thẻ {T}{/T} là tên của mã thông báo mà bạn có thể đặt trong tệp .properties của Trình xử lý thông báo.

    Do đó, mã thông báo cho thuộc tính jsse.enableSNIExtension sẽ như sau:

    conf_system_jsse.enableSNIExtension

Bật SNI trên Trình xử lý tin nhắn

Các bước sau đây mô tả cách bật SNI trên thành phần Trình xử lý thông báo Apigee.

  1. Trên máy Xử lý tin nhắn, hãy mở tệp sau trong một trình chỉnh sửa. Nếu chưa có, hãy tạo tệp này.
    /opt/apigee/customer/application/message-processor.properties

    Ví dụ: để mở tệp bằng vi, hãy nhập lệnh sau:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Thêm một dòng theo định dạng sau vào tệp thuộc tính:
    conf_system_jsse.enableSNIExtension=true
  3. Lưu thay đổi.
  4. Đảm bảo tệp thuộc tính này thuộc sở hữu của người dùng apigee như minh hoạ dưới đây:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Khởi động lại Trình xử lý tin nhắn như minh hoạ dưới đây:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Xác minh rằng cấu hình SNI đã được cập nhật trên Trình xử lý thông báo.
  7. Nếu bạn có nhiều Trình xử lý thông báo, hãy lặp lại các bước trên trên tất cả Trình xử lý thông báo.

Tắt SNI giữa Bộ xử lý thông báo Edge và máy chủ phụ trợ

Thông thường, bạn sẽ không gặp phải vấn đề nào sau khi bật SNI. Tuy nhiên, nếu gặp bất kỳ vấn đề nào về kết nối giữa Trình xử lý thông báo Edge và máy chủ phụ trợ sau khi bật SNI, bạn có thể tắt SNI bất cứ lúc nào bằng cách thực hiện các bước sau.

Bạn có thể tắt SNI bằng cách đặt thuộc tính jsse.enableSNIExtension trở lại false trên thành phần Message Processor.

Tắt SNI trên Trình xử lý thông báo

Các bước sau đây mô tả cách tắt SNI trên Trình xử lý thông báo Apigee.

  1. Trên máy Xử lý tin nhắn, hãy mở tệp sau trong một trình chỉnh sửa. Nếu chưa có, hãy tạo tệp này.
    /opt/apigee/customer/application/message-processor.properties

    Ví dụ: để mở tệp bằng vi, hãy nhập lệnh sau:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Nếu dòng conf_system_jsse.enableSNIExtension=true có trong /opt/apigee/customer/application/message-processor.properties, hãy sửa đổi dòng đó như sau:
    conf_system_jsse.enableSNIExtension=false
  3. Lưu thay đổi.
  4. Đảm bảo tệp thuộc tính này thuộc sở hữu của người dùng apigee như minh hoạ dưới đây:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Khởi động lại Trình xử lý tin nhắn như minh hoạ dưới đây:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Xác minh rằng cấu hình SNI đã được cập nhật trên Trình xử lý thông báo.
  7. Nếu bạn có nhiều Trình xử lý tin nhắn, hãy lặp lại các bước trên cho tất cả Trình xử lý tin nhắn.

Xác minh cấu hình SNI trên Trình xử lý thư

Phần này giải thích cách xác minh rằng bạn đã cập nhật thành công cấu hình SNI trên Trình xử lý thông báo.

Mặc dù bạn sử dụng mã thông báo conf_system_jsse.enableSNIExtension để định cấu hình SNI trên Trình xử lý thông báo, nhưng bạn cần xác minh rằng thuộc tính thực tế jsse.enableSNIExtension đã được đặt bằng giá trị mới.

  1. Trên máy Message Processor, hãy tìm thuộc tính jsse.enableSNIExtension trong thư mục /opt/apigee/edge-message-processor/conf và kiểm tra xem thuộc tính này đã được đặt thành giá trị mới như minh hoạ bên dưới hay chưa:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
  2. Nếu bạn cập nhật thành công cấu hình SNI trên Message Processor, thì lệnh ở trên sẽ cho thấy giá trị mới trong tệp system.properties.

    Sau đây là kết quả mẫu từ lệnh trên sau khi bạn bật SNI trên Trình xử lý thông báo:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true

    Tương tự, kết quả mẫu từ lệnh trên sau khi bạn tắt SNI trên Trình xử lý thông báo sẽ như sau:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false

    Trong ví dụ về đầu ra ở trên, lưu ý rằng thuộc tính jsse.enableSNIExtension đã được cập nhật thành giá trị mới true hoặc false trong system.properties. Điều này cho biết SNI đã được bật hoặc tắt thành công trên Trình xử lý thông báo.

  3. Nếu bạn vẫn thấy giá trị cũ cho thuộc tính jsse.enableSNIExtension, hãy xác minh rằng bạn đã làm theo tất cả các bước được nêu trong phần thích hợp để bật hoặc tắt SNI một cách chính xác. Nếu bạn bỏ lỡ bước nào, hãy lặp lại tất cả các bước một cách chính xác.
  4. Nếu bạn vẫn không thể bật/tắt SNI , hãy liên hệ với Nhóm hỗ trợ Apigee Edge.