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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Edge umożliwia tworzenie hostów wirtualnych, które obsługują jednokierunkowe i dwukierunkowe protokół TLS. W przypadku jednokierunkowego protokołu TLS klient wysyła żądanie sesji do hosta wirtualnego wdrożonego w routerze brzegowym, a router w odpowiedzi wysyła certyfikat zawierający klucz publiczny hosta wirtualnego. W przypadku podpisanego certyfikatu klient może wysłać do urzędu certyfikacji żądanie uwierzytelnienia certyfikatu.

W przypadku dwukierunkowego protokołu TLS certyfikaty klienta i Edge są weryfikowane w ramach żądania:

  • Router brzegowy przedstawia swój certyfikat klientowi TLS, aby się uwierzytelnić. Następnie klient weryfikuje tożsamość serwera przed wysłaniem na serwer 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 wysyłanego do serwera proxy interfejsu API za pośrednictwem hosta wirtualnego obsługującego TLS Edge może przechwycić informacje o połączeniu TLS. Serwer proxy interfejsu API może uzyskać dostęp do tych informacji za pomocą zmiennych przepływu w celu przeprowadzenia dodatkowej analizy i weryfikacji.

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

W przypadku dwukierunkowego protokołu TLS Edge może przechwytywać wszystkie informacje, które są rejestrowane w przypadku jednokierunkowego protokołu TLS, a także przechwytywać informacje o certyfikacie klienta. Na przykład Edge może przechwycić odcisk cyfrowy SHA1 certyfikatu klienta i certyfikatu klienta w formacie PEM.

Przechwytywanie informacji zarówno w przypadku jednokierunkowego, jak i dwukierunkowego protokołu TLS

W tabeli poniżej znajdziesz zmienne przepływu zawierające informacje o połączeniu TLS przechwycone przez Edge i dostępne do dostępu przez serwer proxy interfejsu API. Te informacje są rejestrowane zarówno w przypadku jednokierunkowego, jak i dwukierunkowego protokołu TLS, ustawiając dla zasady <ConnectionProperties> wartość true w definicji hosta wirtualnego:

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

Identyfikator sesji.

Ta zmienna przepływu jest dostępna, gdy ustawisz wartość <ConnectionProperties>, <ClientProperties> lub wartość true.

Przechwytywanie dodatkowych informacji TLS w trakcie dwukierunkowego protokołu TLS

W tabeli poniżej znajdziesz zmienne przepływu zawierające szczegóły certyfikatu klienta przechwycone przez Edge przy użyciu dwukierunkowego protokołu TLS. Te informacje są rejestrowane w przypadku dwukierunkowego protokołu TLS po ustawieniu dla atrybutu <ClientProperties> na wartość true w definicji hosta wirtualnego:

Zmienna przepływu Opis
tls.client.s.dn Nazwa wyróżniająca podmiotu (DN) certyfikatu klienta.
tls.client.i.dn Nazwa wyróżniająca (DN) wystawcy 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 wartość parametru <ConnectionProperties> lub <ClientProperties> na wartość true (prawda).

Konfigurowanie hosta wirtualnego do przechwytywania informacji TLS

Aby skonfigurować hosta wirtualnego do przechwytywania informacji TLS, ustaw poniższe właściwości w <PropagateTLSInformation> na 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 przechwytywanie dodatkowych informacji na potrzeby dwukierunkowego protokołu TLS. Wartością domyślną jest false.

Na przykład poniższa definicja hosta wirtualnego korzysta z dwukierunkowego protokołu 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 taki sposób:

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

Ustawianie limitów rozmiaru nagłówka

Gdy włączysz przechwytywanie informacji TLS na hoście wirtualnym, Edge przekazuje je za pomocą nagłówków HTTP. Musisz więc upewnić się, że limity rozmiaru nagłówka są odpowiednio ustawione w zależności od tego, czy używasz Edge w Google Cloud czy Edge dla Private Cloud:

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

Dostęp do zmiennych przepływu przez serwer proxy interfejsu API

Z poziomu serwera proxy interfejsu API możesz uzyskiwać 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 w JavaScript za pomocą zasady JavaScript.

Do zmiennych przepływu możesz się też odwoływać w elemencie <Condition> procesu proxy lub przepływu docelowego albo w elemencie <Step> lub <RouteRule>. Możesz na przykład skierować żądanie do różnych celów na podstawie numeru seryjny klienta.

Więcej informacji: