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

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Edge umożliwia tworzenie hostów wirtualnych, które obsługują jednokierunkowy i dwukierunkowy protokół TLS. W przypadku jednokierunkowego protokołu TLS, klient wysyła żądanie sesji do hosta wirtualnego wdrożonego na routerze Edge, a router odpowiada certyfikatem zawierającym klucz publiczny hosta wirtualnego. W przypadku certyfikatu podpisanego klient może następnie wysłać żądanie do urzędu certyfikacji (CA), aby uwierzytelnić certyfikat.

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

  • Router Edge przedstawia swój certyfikat klientowi TLS, aby się uwierzytelnić. Klient weryfikuje tożsamość serwera przed wysłaniem do niego swojego certyfikatu.
  • Klient TLS przedstawia swój certyfikat Edge, aby się uwierzytelnić.

Więcej informacji znajdziesz w artykule o hostach wirtualnych.

Przechwytywanie informacji o połączeniu TLS

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

Rodzaj informacji TLS przechwytywanych przez Edge zależy od tego, czy host wirtualny obsługuje jednokierunkowy czy dwukierunkowy protokół TLS. Na przykład w przypadku jednokierunkowego protokołu TLS Edge może przechwytywać informacje o szyfrze TLS lub protokole TLS używanym w połączeniu TLS.

W przypadku dwukierunkowego protokołu TLS Edge może przechwytywać wszystkie te same informacje co w przypadku jednokierunkowego protokołu TLS, a także informacje o certyfikacie klienta. Edge może na przykład przechwytywać odcisk cyfrowy SHA1 certyfikatu klienta oraz certyfikat klienta w formacie PEM.

Przechwytywanie informacji w przypadku obu jednokierunkowego i dwukierunkowego protokołu TLS

W tabeli poniżej znajdziesz listę zmiennych przepływu, które zawierają informacje o połączeniu TLS przechwycone przez Edge i dostępne w proxy interfejsu API. Te informacje są przechwytywane w przypadku jednokierunkowego i dwukierunkowego protokołu TLS przez ustawienie <ConnectionProperties> na true w definicji hosta wirtualnego:

Zmienna przepływu Opis
tls.cipher Szyfr używany przez połączenie 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 <ConnectionProperties> lub <ClientProperties> na true.

Przechwytywanie dodatkowych informacji TLS podczas dwukierunkowego protokołu TLS

W tabeli poniżej znajdziesz listę zmiennych przepływu, które zawierają szczegóły certyfikatu klienta przechwycone przez Edge w przypadku dwukierunkowego protokołu TLS. Te informacje są przechwytywane w przypadku dwukierunkowego protokołu TLS przez ustawienie <ClientProperties> na true w definicji hosta wirtualnego:

Zmienna przepływu Opis
tls.client.s.dn Nazwa wyróżniająca (DN) podmiotu 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 either <ConnectionProperties> or <ClientProperties> na true.

Konfigurowanie hosta wirtualnego do przechwytywania informacji TLS

Aby skonfigurować hosta wirtualnego do przechwytywania informacji TLS, ustaw te właściwości w sekcji <PropagateTLSInformation> na true.

  • <ConnectionProperties>: włącz przechwytywanie informacji o połączeniu TLS w przypadku jednokierunkowego i dwukierunkowego protokołu TLS. Wartością domyślną jest false.
  • <ClientProperties>: włącz przechwytywanie dodatkowych informacji w przypadku 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 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 będzie przekazywać te informacje za pomocą nagłówków HTTP. Musisz więc zadbać o to, aby limity rozmiaru nagłówka były odpowiednio ustawione w zależności od tego, czy używasz Edge for the Cloud czy Edge for the Private Cloud:

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

Uzyskiwanie dostępu do zmiennych przepływu w proxy interfejsu API

W 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, lub zasady JavaScript, aby uzyskać do nich dostęp w JavaScript.

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

Więcej informacji znajdziesz w tych artykułach: