Konfigurowanie TLS z Edge do backendu (chmura i chmura prywatna)

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

Serwer proxy interfejsu API pełni funkcję mapowania publicznie dostępnego punktu końcowego na usługę backendu. Host wirtualny określa sposób, w jaki dostępny publicznie serwer proxy interfejsu API jest udostępniany aplikacji. Na przykład host wirtualny określa, czy można uzyskać dostęp do serwera proxy interfejsu API za pomocą protokołu TLS. Podczas konfigurowania serwera proxy interfejsu API zmień jego definicję ProxyEndpoint, aby skonfigurować używane przez niego hosty wirtualne.

Docelowy punkt końcowy jest wychodzącym odpowiednikiem punktu końcowego ProxyEndpoint. Element TargetEndpoint działa jako klient HTTP z Edge do usługi backendu. Podczas tworzenia serwera proxy interfejsu API możesz skonfigurować go tak, aby używał 0 lub większej liczby punktów docelowych TargetEndpoint.

Więcej informacji:

Konfigurowanie punktu końcowego lub serwera docelowego

Aby skonfigurować obiekt TargetEndpoint, edytuj obiekt XML definiujący ten punkt. Możesz zmodyfikować docelowy punkt końcowy przez edycję pliku XML, który określa punkt docelowy na serwerze proxy interfejsu API, lub zmodyfikować go w interfejsie zarządzania brzegiem.

Aby edytować docelowy punkt końcowy za pomocą interfejsu zarządzania brzegiem:

  1. Zaloguj się w interfejsie zarządzania brzegowym na https://enterprise.apigee.com.
  2. Wybierz nazwę serwera proxy interfejsu API, który chcesz zaktualizować.
  3. Wybierz kartę Programowanie.
  4. W polu Docelowe punkty końcowe wybierz default (domyślne).
  5. W obszarze kodu pojawi się definicja elementu TargetEndpoint (punkt końcowy) podobnego do tej:
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. Skonfiguruj magazyn zaufania w sposób opisany poniżej w sekcji Informacje o konfiguracji TLS z backendem.
  7. Wprowadź zmiany i zapisz serwer proxy. Jeśli serwer proxy interfejsu API został wdrożony, zapisanie go spowoduje ponowne wdrożenie z nowym ustawieniem.

Zwróć uwagę, że definicja elementu TargetEndpoint zawiera właściwość name. Użyj wartości właściwości name, aby skonfigurować definicję ProxyEndpoint dla serwera proxy interfejsu API na potrzeby docelowego punktu końcowego. Więcej informacji znajdziesz w dokumentacji konfiguracji serwera proxy interfejsu API.

Punkty końcowe docelowe można skonfigurować tak, aby odwoływały się do serwera docelowego, a nie do jednoznacznego docelowego adresu URL. Konfiguracja serwera docelowego oddziela konkretne adresy URL punktów końcowych od konfiguracji docelowych punktów końcowych. Serwery docelowe służą do równoważenia obciążenia i przełączania awaryjnego w wielu instancjach serwerów backendu.

Poniżej znajduje się przykładowa definicja serwera docelowego:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

Element TargetServer odwołuje się do nazwy przez element <HTTPTargetConnection> w definicji elementu TargetEndpoint. Możesz skonfigurować co najmniej 1 serwer docelowy o nazwie, jak pokazano poniżej.

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

Więcej informacji znajdziesz na stronie Równoważenie obciążenia między serwerami backendu.

Informacje o konfiguracji TLS z backendem

Zanim skonfigurujesz dostęp TLS do backendu, zapoznaj się z 2 ważnymi informacjami:

  1. Domyślnie Edge nie weryfikuje certyfikatu backendu. Aby skonfigurować Edge pod kątem weryfikacji certyfikatu, musisz utworzyć magazyn zaufania.
  2. Za pomocą odniesienia określ magazyn kluczy lub magazyn zaufania używany przez Edge.

Poniżej opisano oba te aspekty.

Definiowanie magazynu zaufania w celu włączenia weryfikacji certyfikatu

Podczas wysyłania żądania TLS wysyłanego przez punkt końcowy lub serwer docelowy Edge nie domyślnie weryfikuje certyfikatu TLS otrzymanego z serwera backendu. Oznacza to, że Edge nie sprawdza, czy:

  • Certyfikat został podpisany przez zaufany urząd certyfikacji.
  • Certyfikat nie wygasł.
  • Certyfikat zawiera powszechne imię i nazwisko. Jeśli istnieje wspólna nazwa, Edge nie sprawdza, czy jest ona zgodna z nazwą hosta podaną w adresie URL.

Aby skonfigurować Edge pod kątem weryfikacji certyfikatu backendu, musisz:

  1. Utwórz magazyn zaufania w Edge.
  2. Prześlij certyfikat lub łańcuch certyfikatów serwera do magazynu zaufania. Jeśli certyfikat serwera jest podpisany przez inną firmę, musisz przesłać do magazynu zaufanych cały łańcuch certyfikatów, w tym certyfikat głównego urzędu certyfikacji. Nie ma żadnych domyślnie zaufanych urzędów certyfikacji.
  3. Dodaj magazyn zaufania do definicji punktu końcowego docelowego lub serwera docelowego.

Więcej informacji znajdziesz w artykule o magazynach kluczy i magazynach zaufania.

Na przykład:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Korzystanie z odniesienia do magazynu kluczy lub magazynu zaufania

Przykład poniżej pokazuje, jak skonfigurować docelowy punkt końcowy lub serwer docelowy pod kątem obsługi TLS. Podczas konfigurowania protokołu TLS określasz magazyn zaufania i magazyn kluczy jako część definicji punktu końcowego docelowego lub serwera docelowego.

Apigee zdecydowanie zaleca użycie odwołania do magazynu kluczy i magazynu zaufanych w definicji TargetEndpoints lub TargetServer. Zaletą korzystania z pliku referencyjnego jest to, że musisz je tylko zaktualizować, aby wskazywały inny magazyn kluczy lub magazyn zaufanych certyfikatów, aby zaktualizować certyfikat TLS.

Odniesienia do magazynów kluczy i magazynów zaufania w definicji TargetEndpoints lub TargetServer działają tak samo jak w przypadku hostów wirtualnych.

Konwertowanie punktu końcowego lub serwera docelowego na użycie odwołania

Być może masz już definicje TargetEndpoint lub TargetServer, które korzystają z nazwy literału magazynu kluczy i magazynu zaufanych certyfikatów. Aby przekonwertować definicję elementu TargetEndpoint lub serwera docelowego na użycie odwołań:

  1. Zaktualizuj definicję punktu końcowego lub serwera docelowego, aby użyć odwołania.
  2. Ponownie uruchom procesory wiadomości Edge:
    • W przypadku klientów chmury publicznej skontaktuj się z zespołem pomocy Apigee Edge, aby ponownie uruchomić procesory wiadomości.
    • W przypadku klientów Private Cloud ponownie uruchamiaj procesory wiadomości Edge pojedynczo.
  3. Sprawdź, czy docelowy punkt końcowy lub serwer docelowy działa prawidłowo.

Konfigurowanie jednokierunkowego protokołu TLS do serwera backendu

W przypadku korzystania z definicji elementu TargetEndpoint skonfigurowanie jednokierunkowego dostępu TLS z klienta Edge (klienta TLS) do serwera backendu (serwer TLS) nie wymaga dodatkowej konfiguracji w Edge. Prawidłowa konfiguracja protokołu TLS zależy od serwera backendu.

Musisz tylko sprawdzić, czy element <URL> w definicji elementu TargetEndpoint odwołuje się do usługi backendu za pomocą protokołu HTTPS i że jest włączony protokół TLS:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Jeśli do definiowania usługi backendu używasz serwera docelowego, włącz TLS w definicji serwera docelowego:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

Jeśli jednak chcesz, aby przeglądarka Edge sprawdzała certyfikat backendu, musisz utworzyć magazyn zaufania zawierający certyfikat lub łańcuch certyfikatów backendu. Następnie określ magazyn zaufania w definicji elementu TargetEndpoint:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Lub w definicji serwera docelowego:

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

Aby skonfigurować jednokierunkowy protokół TLS:

  1. Jeśli chcesz zweryfikować certyfikat backendu, utwórz magazyn zaufania w Edge i prześlij certyfikat backendu lub łańcuch urzędów certyfikacji zgodnie z opisem w sekcji magazyny kluczy i magazyny zaufania. W tym przykładzie, jeśli musisz utworzyć magazyn zaufania, nazwij go myTrustStore.
  2. Jeśli masz utworzony magazyn zaufania, użyj poniższego wywołania interfejsu API POST, aby utworzyć odwołanie o nazwie myTrustStoreRef do utworzonego powyżej magazynu zaufania:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. Za pomocą interfejsu zarządzania brzegiem sieci możesz zaktualizować definicję elementu TargetEndpoint dla serwera proxy interfejsu API (lub, jeśli zdefiniujesz serwer proxy interfejsu API w formacie XML, zmodyfikuj pliki XML serwera proxy):
    1. Zaloguj się w interfejsie zarządzania brzegowym na https://enterprise.apigee.com.
    2. W menu interfejsu zarządzania urządzeniami brzegowymi wybierz Interfejsy API.
    3. Wybierz nazwę serwera proxy interfejsu API, który chcesz zaktualizować.
    4. Wybierz kartę Programowanie.
    5. W polu Docelowe punkty końcowe wybierz default (domyślne).
    6. W obszarze kodu edytuj element <HTTPTargetConnection>, aby dodać element <SSLInfo>. Pamiętaj, aby określić prawidłowe odwołanie do magazynu zaufanych certyfikatów i ustawić dla zasady <Enabled> wartość true:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Zapisz serwer proxy interfejsu API. Jeśli serwer proxy interfejsu API został wdrożony, zapisanie go spowoduje ponowne wdrożenie z nowym ustawieniem.

Konfigurowanie dwukierunkowego protokołu TLS do serwera backendu

Jeśli chcesz obsługiwać dwukierunkową obsługę TLS między brzegiem sieci (klientem TLS) a serwerem backendu (serwerem TLS):

  • Utwórz magazyn kluczy w Edge i prześlij certyfikat oraz klucz prywatny.
  • Jeśli chcesz zweryfikować certyfikat backendu, utwórz w Edge magazyn zaufania zawierający certyfikat i łańcuch urzędów certyfikacji otrzymane z serwera backendu.
  • Zaktualizuj element TargetEndpoint we wszystkich serwerach proxy interfejsu API, które odwołują się do serwera backendu, aby skonfigurować dostęp TLS.

Używanie aliasu klucza do określenia certyfikatu magazynu kluczy

W tym samym magazynie kluczy możesz zdefiniować wiele certyfikatów, każdy z osobnym aliasem. Domyślnie Edge używa pierwszego certyfikatu zdefiniowanego w magazynie kluczy.

Opcjonalnie możesz skonfigurować Edge, aby używała certyfikatu określonego przez właściwość <KeyAlias>. Dzięki temu możesz zdefiniować jeden magazyn kluczy dla wielu certyfikatów, a następnie wybrać ten, którego chcesz używać w definicji serwera docelowego. Jeśli Edge nie może znaleźć certyfikatu z aliasem zgodnym z <KeyAlias>, stosuje domyślne działanie polegające na wybraniu pierwszego certyfikatu w magazynie kluczy.

Aby włączyć tę funkcję, użytkownicy Edge dla chmury publicznej muszą skontaktować się z zespołem pomocy Apigee Edge.

Konfigurowanie dwukierunkowego protokołu TLS

Aby skonfigurować dwukierunkowe protokół TLS:

  1. Utwórz magazyn kluczy na Edge i prześlij certyfikat oraz klucz prywatny, wykonując czynności opisane w tym artykule: magazyny kluczy i magazyny zaufania. W tym przykładzie utwórz magazyn kluczy o nazwie myTestKeystore, w którym na potrzeby certyfikatu i klucza prywatnego używany jest alias o nazwie myKey.
  2. Użyj tego wywołania interfejsu API POST, aby utworzyć odniesienie o nazwie myKeyStoreRef do magazynu kluczy utworzonego powyżej:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    Odwołanie określa nazwę magazynu kluczy i typ odwołania jako KeyStore.

    Aby wyświetlić dokumentację, użyj tego wywołania interfejsu GET API:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Jeśli chcesz zweryfikować certyfikat backendu, utwórz magazyn zaufania w Edge, a następnie prześlij certyfikat i łańcuch urzędów certyfikacji zgodnie z opisem w tym artykule: magazyny kluczy i magazyny zaufania. Jeśli w tym przykładzie musisz utworzyć nazwę magazynu zaufanych certyfikatów, wybierz myTrustStore.
  4. Jeśli masz utworzony magazyn zaufania, użyj poniższego wywołania interfejsu API POST, aby utworzyć odwołanie o nazwie myTrustStoreRef do utworzonego powyżej magazynu zaufania:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. Za pomocą interfejsu zarządzania brzegiem sieci możesz zaktualizować definicję elementu TargetEndpoint dla serwera proxy interfejsu API (lub, jeśli zdefiniujesz serwer proxy interfejsu API w formacie XML, zmodyfikuj pliki XML serwera proxy):
    1. Zaloguj się w interfejsie zarządzania brzegowym na https://enterprise.apigee.com.
    2. W menu interfejsu zarządzania urządzeniami brzegowymi wybierz Interfejsy API.
    3. Wybierz nazwę serwera proxy interfejsu API, który chcesz zaktualizować.
    4. Wybierz kartę Programowanie.
    5. W polu Docelowe punkty końcowe wybierz default (domyślne).
    6. W obszarze kodu edytuj element <HTTPTargetConnection>, aby dodać element <SSLInfo>. Określ prawidłowy magazyn kluczy i alias kluczy oraz ustaw wartość elementu <Enabled> i <ClientAuthEnabled> na wartość true (prawda):
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. Zapisz serwer proxy interfejsu API. Jeśli serwer proxy interfejsu API został wdrożony, zapisanie go spowoduje ponowne wdrożenie z nowym ustawieniem.

Więcej informacji o opcjach dostępnych w interfejsie <TargetEndpoint>, w tym o używaniu zmiennych do dostarczania wartości elementu TargetEndpoint <SSLInfo>, znajdziesz w dokumentacji dotyczącej konfiguracji serwera proxy interfejsu API.

Włączam SNI

Edge obsługuje korzystanie z usługi SNI (Server Name Indication) z procesorów wiadomości do docelowych punktów końcowych w Apigee Edge dla Cloud i wdrożeń w chmurze Private Cloud.

Aby zapewnić zgodność wsteczną z istniejącymi backendami docelowymi dla Edge dla chmury prywatnej, usługa Apigee domyślnie wyłączyła SNI. Jeśli docelowy backend jest skonfigurowany do obsługi SNI, możesz włączyć tę funkcję. Więcej informacji znajdziesz w artykule Korzystanie z SNI z Edge.