Uzyskiwanie dostępu do informacji o połączeniu TLS w serwerze proxy interfejsu API

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Edge umożliwia tworzenie hostów wirtualnych obsługujących jednokierunkowe i dwukierunkowe połączenia TLS. W przypadku TLS jednokierunkowego klient wysyła żądanie sesji do hosta wirtualnego wdrożonego na routerze brzegowym, a router odpowiada certyfikatem zawierającym klucz publiczny hosta wirtualnego. W przypadku podpisanego certyfikatu klient może wysłać żądanie do urzędu certyfikacji (CA) w celu uwierzytelnienia certyfikatu.

W przypadku dwukierunkowego TLS zarówno klient, jak i Edge przesyłają certyfikaty, które są weryfikowane w ramach żądania:

  • Router brzegowy przedstawia swój certyfikat klientowi TLS w celu uwierzytelnienia. Następnie klient weryfikuje tożsamość serwera, zanim wyśle certyfikat na serwer.
  • Klient TLS przedstawia swój certyfikat Edge, aby się uwierzytelnić.

Więcej informacji znajdziesz w artykule Informacje o hostach wirtualnych.

Przechwytywanie informacji o połączeniu TLS

Podczas wysyłania żądania do serwera proxy interfejsu API za pośrednictwem hosta wirtualnego, który obsługuje TLS, Edge może przechwytywać informacje o połączeniu TLS. Twój serwer proxy interfejsu API może następnie uzyskać dostęp do tych informacji za pomocą zmiennych przepływu, aby przeprowadzić dodatkową analizę i weryfikację.

Typ informacji TLS przechwytywanych przez Edge zależy od tego, czy host wirtualny obsługuje jedno- lub dwukierunkowe TLS. Na przykład w przypadku jednokierunkowego TLS Edge może rejestrować informacje o szyfrze TLS lub protokole TLS używanym w połączeniu TLS.

W przypadku dwukierunkowego protokołu TLS Edge może rejestrować wszystkie informacje, które są rejestrowane w przypadku jednokierunkowego połączenia TLS. oraz zarejestrować informacje o certyfikacie klienta. Na przykład Edge może zarejestrować odcisk cyfrowy SHA1. z certyfikatem klienta i certyfikatem klienta w formacie PEM.

Rejestruję informacje w obu przypadkach jedno- i dwukierunkowe TLS

W tabeli poniżej znajdziesz zmienne przepływu, które zawierają informacje o połączeniu TLS przechwycone przez Edge i dostępne w interfejsie proxy API. Te informacje są rejestrowane zarówno w przypadku szyfrowania jednokierunkowego, jak i dwukierunkowego TLS. Aby to zrobić, ustaw wartość <ConnectionProperties> na „true” w definicji hosta wirtualnego:

Zmienna przepływu Opis
tls.cipher Mechanizm szyfrowania połączenia TLS.
tls.protocol Protokół używany przez połączenie TLS.
tls.server.name Żądana nazwa serwera SNI.
tls.session.id

Identyfikator sesji.

Ta zmienna procesu jest dostępna, gdy ustawisz jedną z tych wartości: <ConnectionProperties> lub <ClientProperties> albo na wartość true.

Przechwytywanie dodatkowych informacji TLS podczas dwukierunkowego TLS

Poniższa tabela zawiera zmienne przepływu, które zawierają szczegóły certyfikatów klienta przechwycone przez Edge w przypadku dwukierunkowego protokołu TLS. Te informacje są rejestrowane w przypadku dwukierunkowego TLS, gdy w definicji hosta wirtualnego ustawisz wartość <ClientProperties> na „true”:

Zmienna przepływu Opis
tls.client.s.dn Nazwa wyróżniająca (DN) podmiotu certyfikatu klienta.
tls.client.i.dn Nazwa wyróżniająca wydawcy certyfikatu klienta.
tls.client.raw.cert Certyfikat klienta w formacie PEM.
tls.client.cert.serial Numer seryjny certyfikatu klienta.
tls.client.cert.fingerprint Odcisk cyfrowy SHA1 certyfikatu klienta.
tls.session.id

Identyfikator sesji.

Ta zmienna przepływu jest dostępna, gdy ustawisz jedną z tych wartości: <ConnectionProperties> lub <ClientProperties> na wartość true (prawda).

Konfigurowanie hosta wirtualnego pod kątem rejestrowania informacji TLS

Aby skonfigurować host wirtualny do przechwytywania informacji o TLS, ustaw następujące właściwości poniżej <PropagateTLSInformation>true.

  • <ConnectionProperties>: włączanie rejestrowania informacji o połączeniu TLS zarówno w przypadku szyfrowania jednokierunkowego, jak i dwukierunkowego. (wartością domyślną jest false);
  • <ClientProperties>: włącz rejestrowanie dodatkowych informacji dla dwukierunkowego protokołu TLS. (wartością domyślną jest false);

Na przykład poniższa definicja hosta wirtualnego używa dwukierunkowego TLS i umożliwia przechwytywanie obu typów informacji 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>

Jeśli przekazujesz treść JSON, ustaw właściwości w ten sposób:

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

Ustawianie limitów rozmiaru nagłówka

Gdy włączysz przechwytywanie informacji TLS na hoście wirtualnym, Edge przekaże te informacje za pomocą nagłówków HTTP. Dlatego musisz odpowiednio ustawić limity rozmiaru nagłówka w zależności od tego, czy używasz Edge for Cloud czy Edge for Private Cloud:

  • Edge dla chmury: Apigee odpowiednio ustawia rozmiary nagłówków.
  • Edge dla Private Cloud: funkcja niedostępna.

Dostęp do zmiennych przepływu w proxy interfejsu API

Z poziomu serwera proxy interfejsu API możesz uzyskać dostęp do zmiennych przepływu TLS i je sprawdzać. Możesz na przykład użyć zasady AssignMessage, aby uzyskać do nich dostęp, lub użyć ich w JavaScript za pomocą zasady JavaScript.

Możesz też odwoływać się do zmiennych przepływu w elemencie <Condition> przepływu podrzędnego lub docelowego albo w elemencie <Step> lub <RouteRule>. Możesz na przykład kierować żądanie do różnych miejsc docelowych na podstawie numeru seryjnego klienta.

Więcej informacji: