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 jednokierunkowego protokołu TLS klient wysyła żądanie sesji do hosta wirtualnego wdrożonego w routerze brzegowym i routerze odpowiada certyfikatem zawierającym klucz publiczny hosta wirtualnego. W przypadku podpisanego certyfikatu klient może następnie wysłać do urzędu certyfikacji żądanie uwierzytelnienia certyfikatu.

W przypadku dwukierunkowego protokołu TLS zarówno certyfikaty klienta, jak i certyfikaty Edge, które są weryfikowane w ramach żądania:

  • Router brzegowy przedstawia swój certyfikat klientowi TLS, aby się uwierzytelnić. Klient a następnie weryfikuje tożsamość serwera przed wysłaniem do niego certyfikatu.
  • 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. Serwer proxy interfejsu API może uzyskać dostęp do tych informacji za pośrednictwem 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 połączenia TLS usługa Edge Mechanizm szyfrowania TLS lub protokół TLS używany 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

Tabela poniżej zawiera listę zmiennych przepływu, które zawierają przechwycone informacje o połączeniu TLS Edge i dostępne do dostępu przez serwer proxy interfejsu API. Te informacje są rejestrowane w obu kierunkach i dwukierunkowego TLS przez ustawienie zasady <ConnectionProperties> na wartość Prawda Definicja 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.

Rejestrowanie dodatkowych informacji o protokole TLS podczas dwukierunkowego połączenia 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 protokołu TLS przez ustawienie <ClientProperties> ma wartość prawda w definicji hosta wirtualnego:

Zmienna przepływu Opis
tls.client.s.dn Nazwa wyróżniająca 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 do przechwytywania informacji o TLS

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

  • <ConnectionProperties>: włącz przechwytywanie informacji o połączeniu TLS dla jednokierunkowego i dwukierunkowego protokołu TLS. 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 ta definicja hosta wirtualnego używa dwukierunkowego protokołu TLS i umożliwia przechwytywanie obydwa typy 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 na:

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

Ustawianie limitów rozmiaru nagłówka

Gdy włączysz przechwytywanie informacji o TLS na hoście wirtualnym, Edge przekazuje te informacje za pomocą nagłówków HTTP. Dlatego musisz się upewnić, że limity rozmiaru nagłówka są prawidłowo ustawione. w zależności od tego, czy używasz Edge w chmurze czy Edge w chmurze prywatnej:

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

Dostęp do zmiennych przepływu za pośrednictwem serwera 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ć metody AssignMessage aby uzyskać do nich dostęp, użyj JavaScriptu z zasadą JavaScript.

Do zmiennych przepływu możesz się też odwoływać w elemencie <Condition> serwera proxy lub przepływu docelowego. albo w aplikacji <Step> lub <RouteRule>. Możesz na przykład kierować Wysyłanie żądania do różnych środowisk docelowych w zależności od numeru SN klienta.

Więcej informacji: