Truy cập thông tin kết nối TLS trong proxy API

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Edge cho phép bạn tạo máy chủ ảo hỗ trợ TLS một chiều và hai chiều. Với TLS một chiều, ứng dụng đưa ra yêu cầu phiên cho một máy chủ ảo được triển khai trên Bộ định tuyến Edge và Bộ định tuyến phản hồi bằng chứng chỉ chứa khoá công khai của máy chủ ảo. Đối với chứng chỉ đã ký, ứng dụng sau đó có thể gửi yêu cầu tới Tổ chức phát hành chứng chỉ (CA) để xác thực chứng chỉ.

Trong TLS hai chiều, cả máy khách và máy khách đều truyền các chứng chỉ được xác thực theo yêu cầu:

  • Bộ định tuyến Edge trình bày chứng chỉ cho ứng dụng TLS để tự xác thực. Khách hàng sau đó xác minh danh tính của máy chủ trước khi gửi chứng chỉ đến máy chủ.
  • Ứng dụng TLS sẽ trình bày chứng chỉ cho Edge để tự xác thực.

Hãy xem bài viết Giới thiệu về máy chủ ảo để biết thêm thông tin.

Đang chụp lại thông tin kết nối TLS

Trong khi gửi yêu cầu tới một proxy API thông qua một máy chủ ảo có hỗ trợ TLS, Edge có thể chụp thông tin về kết nối TLS. Sau đó, proxy API của bạn có thể truy cập vào thông tin đó thông qua biến luồng để thực hiện phân tích và xác thực bổ sung.

Loại thông tin TLS mà Edge thu thập tuỳ thuộc vào việc máy chủ ảo có hỗ trợ hay không TLS một chiều hoặc hai chiều. Ví dụ: đối với TLS một chiều, Edge có thể thu thập thông tin về Thuật toán mật mã TLS hoặc giao thức TLS được sử dụng trong kết nối TLS.

Đối với TLS hai chiều, Edge có thể thu thập tất cả thông tin giống như được ghi lại cho TLS một chiều, và cũng thu thập thông tin về chứng chỉ của ứng dụng khách. Ví dụ: Edge có thể ghi lại vân tay SHA1 của chứng chỉ ứng dụng và chứng chỉ ứng dụng khách ở định dạng PEM.

Đang chụp thông tin cho cả hai TLS một chiều và hai chiều

Bảng sau đây liệt kê các biến luồng chứa thông tin kết nối TLS đã thu thập by Edge và có thể truy cập trong proxy API. Thông tin này được thu thập cho cả một chiều và TLS hai chiều bằng cách đặt <ConnectionProperties> thành true trong định nghĩa máy chủ ảo:

Biến luồng Nội dung mô tả
tls.cipher Thuật toán mật mã mà kết nối TLS sử dụng.
tls.protocol Giao thức mà kết nối TLS sử dụng.
tls.server.name Tên máy chủ SNI được yêu cầu.
tls.session.id

Giá trị nhận dạng phiên.

Biến luồng này khả dụng khi bạn đặt <ConnectionProperties> hoặc <ClientProperties> hoặc thành true.

Chụp lại thông tin TLS bổ sung trong TLS hai chiều

Bảng sau đây liệt kê các biến quy trình chứa chi tiết chứng chỉ ứng dụng do Edge thu thập trong TLS hai chiều. Thông tin này được thu thập cho TLS hai chiều bằng cách cài đặt <ClientProperties> thành true trong định nghĩa máy chủ ảo:

Biến luồng Nội dung mô tả
tls.client.s.dn Tiêu đề Tên phân biệt (DN) của chứng chỉ ứng dụng.
tls.client.i.dn Nhà phát hành Tên phân biệt (DN) của chứng chỉ ứng dụng.
tls.client.raw.cert Chứng chỉ ứng dụng ở định dạng PEM.
tls.client.cert.serial Số sê-ri của chứng chỉ ứng dụng.
tls.client.cert.fingerprint Vân tay số SHA1 của chứng chỉ ứng dụng.
tls.session.id

Giá trị nhận dạng phiên.

Biến luồng này khả dụng khi bạn đặt một trong hai <ConnectionProperties> hoặc <ClientProperties> thành true.

Định cấu hình máy chủ ảo để thu thập thông tin TLS

Để định cấu hình máy chủ ảo nhằm thu thập thông tin TLS, hãy đặt các thuộc tính sau từ <PropagateTLSInformation> đến true.

  • <ConnectionProperties>: Bật tính năng thu thập thông tin kết nối TLS cho cả TLS một chiều và hai chiều. Giá trị mặc định là false.
  • <ClientProperties>: Bật tính năng thu thập thông tin bổ sung cho TLS hai chiều. Giá trị mặc định là false.

Ví dụ: định nghĩa máy chủ ảo sau đây sử dụng TLS hai chiều và cho phép thu thập cả hai loại thông tin TLS:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

Nếu bạn đang truyền một nội dung JSON, hãy thiết lập các thuộc tính thành:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

Đặt giới hạn kích thước tiêu đề

Khi bạn bật tính năng thu thập thông tin TLS trên một máy chủ ảo, Edge sẽ chuyển thông tin đó bằng tiêu đề HTTP. Do đó, bạn phải đảm bảo đặt giới hạn kích thước tiêu đề phù hợp dựa trên việc bạn đang dùng Edge cho Cloud hay Edge cho Đám mây riêng tư:

  • Edge cho Cloud: Apigee đặt kích thước tiêu đề một cách phù hợp.
  • Edge dành cho đám mây riêng tư: Không dùng được tính năng này.

Truy cập vào các biến luồng trong proxy API

Từ trong proxy API, bạn có thể truy cập và kiểm tra các biến luồng TLS. Ví dụ: bạn có thể sử dụng AssignMessage để truy cập chúng, hãy truy cập chúng trong JavaScript bằng chính sách JavaScript.

Bạn cũng có thể tham chiếu các biến luồng trong phần tử <Condition> của proxy hoặc luồng mục tiêu, hoặc trong <Step> hoặc <RouteRule>. Ví dụ: bạn có thể định tuyến một yêu cầu tới các mục tiêu khác nhau dựa trên SN của ứng dụng.

Để biết thêm thông tin, hãy xem: