TLS von Edge zum Back-End konfigurieren (Cloud und private Cloud)

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation vonApigee X.
info

Ein API-Proxy fungiert als Zuordnung eines öffentlich verfügbaren Endpunkts zu Ihrem Backend-Dienst. Ein virtueller Host definiert, wie der öffentlich zugängliche API-Proxy für eine App verfügbar gemacht wird. For Beispiel bestimmt der virtuelle Host, ob auf den API-Proxy über TLS zugegriffen werden kann. Wenn Sie einen API-Proxy konfigurieren, bearbeiten Sie die Definition des ProxyEndpoint, um die virtuellen Hosts zu konfigurieren, die er verwendet.

Der TargetEndpoint ist die ausgehende Entsprechung des ProxyEndpoint. Ein TargetEndpoint fungiert als HTTP-Client von Edge zu einem Backend-Dienst. Beim Erstellen eines API-Proxys können Sie ihn so konfigurieren, dass er null oder mehr TargetEndpoints verwendet.

Weitere Informationen :

TargetEndpoint oder TargetServer konfigurieren

Wenn Sie einen TargetEndpoint konfigurieren möchten, bearbeiten Sie das XML-Objekt, das den TargetEndpoint definiert. Sie können den TargetEndpoint bearbeiten, indem Sie die XML-Datei bearbeiten, die den TargetEndpoint in Ihrem API-Proxy definiert, oder ihn in der Edge-Verwaltungs-UI bearbeiten.

So bearbeiten Sie den TargetEndpoint über die Edge-Verwaltungs-UI:

  1. Melden Sie sich unter https://enterprise.apigee.com in der Edge-Verwaltungs-UI an.
  2. Wählen Sie den Namen des API-Proxys aus, den Sie aktualisieren möchten.
  3. Wählen Sie den Tab Develop aus.
  4. Wählen Sie unter Target Endpoints die Option default aus.
  5. Im Codebereich wird die TargetEndpoint-Definition ähnlich wie unten dargestellt:
    <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. Konfigurieren Sie einen Truststore wie unten unter Informationen zur TLS-Konfiguration mit dem Backend beschrieben.
  7. Nehmen Sie alle gewünschten Änderungen vor und speichern Sie den Proxy. Wenn der API-Proxy bereitgestellt wurde, wird er durch das Speichern neu bereitgestellt.

Beachten Sie, dass die TargetEndpoint-Definition eine name-Property enthält. Mit dem Wert der Propertyname konfigurieren Sie die ProxyEndpoint-Definition eines API-Proxys so, dass der TargetEndpoint verwendet wird. Weitere Informationen finden Sie unter Referenz zur API-Proxy-Konfiguration.

TargetEndpoints können so konfiguriert werden, dass sie auf einen TargetServer anstelle der expliziten Ziel-URL verweisen. Eine TargetServer-Konfiguration entkoppelt konkrete Endpunkt-URLs von TargetEndpoint-Konfigurationen. TargetServer werden verwendet, um das Load-Balancing und den Failover auf mehreren Backend-Serverinstanzen zu unterstützen.

Unten sehen Sie ein Beispiel für eine TargetServer-Definition:

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

Auf einen TargetServer wird in der TargetEndpoint-Definition im <HTTPTargetConnection> Element mit dem Namen verwiesen. Sie können einen oder mehrere benannte TargetServer konfigurieren, wie unten dargestellt.

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

Weitere Informationen finden Sie unter Load-Balancing über Back-End-Server.

Informationen zur TLS-Konfiguration mit dem Backend

Bevor Sie den TLS-Zugriff auf das Backend konfigurieren, sollten Sie zwei wichtige Punkte beachten:

  1. Standardmäßig validiert Edge das Backend-Zertifikat nicht. Sie müssen einen Truststore erstellen, um Edge so zu konfigurieren, dass das Zertifikat validiert wird.
  2. Verwenden Sie einen Verweis, um den Schlüsselspeicher oder Truststore anzugeben, der von Edge verwendet wird.

Beide Punkte werden unten beschrieben.

Truststore definieren, um die Zertifikatvalidierung zu aktivieren

Wenn Sie eine TLS-Anfrage über einen TargetEndpoint oder TargetServer stellen, validiert Edge standardmäßig nicht das TLS-Zertifikat, das vom Backend-Server empfangen wurde. Das bedeutet, dass Edge nicht validiert , ob:

  • Das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde.
  • Das Zertifikat noch nicht abgelaufen ist.
  • Das Zertifikat einen allgemeinen Namen enthält. Wenn ein allgemeiner Name vorhanden ist, validiert Edge nicht , ob der allgemeine Name mit dem im URL angegebenen Hostnamen übereinstimmt.

Wenn Sie Edge so konfigurieren möchten, dass das Backend-Zertifikat validiert wird, müssen Sie Folgendes tun:

  1. Erstellen Sie einen Truststore in Edge.
  2. Laden Sie das Zertifikat oder die Zertifikatskette des Servers in den Truststore hoch. Wenn das Serverzertifikat von einem Drittanbieter signiert wurde, müssen Sie die vollständige Zertifikatskette, einschließlich des Zertifikats der Stammzertifizierungsstelle, in den Truststore hochladen. Es gibt keine implizit vertrauenswürdigen Zertifizierungsstellen.
  3. Fügen Sie den Truststore der TargetEndpoint- oder TargetServer-Definition hinzu.

Weitere Informationen finden Sie unter Schlüsselspeicher und Truststores.

Beispiel:

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

Verweis auf einen Schlüsselspeicher oder Truststore verwenden

Im folgenden Beispiel wird gezeigt, wie Sie einen TargetEndpoint oder TargetServer für die Unterstützung von TLS konfigurieren. Im Rahmen der TLS-Konfiguration geben Sie einen Truststore und einen Schlüsselspeicher als Teil einer TargetEndpoint- oder TargetServer-Definition an.

Apigee empfiehlt dringend, in der TargetEndpoint- oder TargetServer-Definition einen Verweis auf den Schlüsselspeicher und den Truststore zu verwenden. Der Vorteil einer Referenz besteht darin, dass Sie nur die Referenz aktualisieren müssen, um auf einen anderen Schlüsselspeicher oder Truststore zu verweisen, um das TLS-Zertifikat zu aktualisieren.

Verweise auf Schlüsselspeicher und Truststores in der TargetEndpoint- oder TargetServer-Definition funktionieren genauso wie bei virtuellen Hosts.

TargetEndpoint oder TargetServer für die Verwendung eines Verweises umwandeln

Möglicherweise haben Sie bereits TargetEndpoint- oder TargetServer-Definitionen, die den Literalnamen des Schlüsselspeichers und des Truststores verwenden. So wandeln Sie die TargetEndpoint oder TargetServer-Definition für die Verwendung von Verweisen um:

  1. Aktualisieren Sie die TargetEndpoint- oder TargetServer-Definition, um einen Verweis zu verwenden.
  2. Starten Sie die Edge-Nachrichtenprozessoren neu:
    • Public Cloud-Kunden wenden sich an den Apigee Edge-Support, um die Nachrichtenprozessoren neu zu starten.
    • Private Cloud -Kunden starten die Edge-Nachrichtenprozessoren einzeln neu.
  3. Prüfen Sie, ob Ihr TargetEndpoint oder TargetServer ordnungsgemäß funktioniert.

One-Way-TLS für den Backend Server konfigurieren

Wenn Sie eine TargetEndpoint-Definition verwenden, ist für die Konfiguration des One-Way-TLS-Zugriffs von Edge (TLS-Client) auf den Backend-Server (TLS-Server) keine zusätzliche Konfiguration in Edge erforderlich. Es liegt am Backend-Server, TLS richtig zu konfigurieren.

Sie müssen nur darauf achten, dass das <URL> Element in der TargetEndpoint-Definition auf den Backend-Dienst über das HTTPS-Protokoll verweist und dass Sie TLS aktivieren:

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

Wenn Sie den Backend-Dienst mit einem TargetServer definieren, aktivieren Sie TLS in der TargetServer-Definition:

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

Wenn Sie jedoch möchten, dass Edge das Backend-Zertifikat validiert, müssen Sie einen Truststore erstellen, der das Backend-Zertifikat oder die Zertifikatskette enthält. Anschließend geben Sie den Truststore in der TargetEndpoint-Definition an:

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

Oder in der TargetServer-Definition:

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

So konfigurieren Sie One-Way-TLS:

  1. Wenn Sie das Backend-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge und laden Sie das Backend-Zertifikat oder die Zertifizierungsstellenkette hoch, wie unter Schlüsselspeicher und Truststores beschrieben. Wenn Sie in diesem Beispiel einen Truststore erstellen müssen, nennen Sie ihn myTrustStore.
  2. Wenn Sie einen Truststore erstellt haben , verwenden Sie den folgenden POST-API-Aufruf, um den Verweis myTrustStoreRef auf den oben erstellten Truststore zu erstellen:

    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. Aktualisieren Sie die TargetEndpoint-Definition für den API-Proxy über die Edge-Verwaltungs-UI. Wenn Sie den API-Proxy in XML definieren, bearbeiten Sie die XML-Dateien für den Proxy:
    1. Melden Sie sich unter https://enterprise.apigee.com in der Edge-Verwaltungs-UI an.
    2. Wählen Sie im Menü der Edge-Verwaltungs-UI APIs aus.
    3. Wählen Sie den Namen des API-Proxys aus, den Sie aktualisieren möchten.
    4. Wählen Sie den Tab Development aus.
    5. Wählen Sie unter Target Endpoints die Option default aus.
    6. Bearbeiten Sie im Codebereich das Element <HTTPTargetConnection>, um das Element <SSLInfo> hinzuzufügen. Achten Sie darauf, den richtigen Truststore-Verweis anzugeben und <Enabled> auf „true“ zu setzen:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Speichern Sie den API-Proxy. Wenn der API-Proxy bereitgestellt wurde, wird er durch das Speichern mit der neuen Einstellung neu bereitgestellt.

Two-Way-TLS für den Backend Server konfigurieren

Wenn Sie Two-Way-TLS zwischen Edge (TLS-Client) und dem Backend-Server (TLS Server) unterstützen möchten:

  • Erstellen Sie einen Schlüsselspeicher in Edge und laden Sie das Edge-Zertifikat und den privaten Schlüssel hoch.
  • Wenn Sie das Backend-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge, der das Zertifikat und die Zertifizierungsstellenkette enthält, die Sie vom Backend-Server erhalten haben.
  • Aktualisieren Sie den TargetEndpoint aller API-Proxys, die auf den Backend-Server verweisen, um den TLS-Zugriff zu konfigurieren.

Schlüsselalias verwenden, um das Schlüsselspeicherzertifikat anzugeben

Sie können im selben Schlüsselspeicher mehrere Zertifikate mit jeweils einem eigenen Alias definieren. Standardmäßig verwendet Edge das erste im Schlüsselspeicher definierte Zertifikat.

Optional können Sie Edge so konfigurieren, dass das Zertifikat verwendet wird, das durch die <KeyAlias> Property angegeben wird. So können Sie einen einzelnen Schlüsselspeicher für mehrere Zertifikate definieren und dann das gewünschte Zertifikat in der TargetServer-Definition auswählen. Wenn Edge kein Zertifikat mit einem Alias findet, das mit <KeyAlias> übereinstimmt, wird die Standardaktion ausgeführt und das erste Zertifikat im Schlüsselspeicher ausgewählt.

Edge for Public Cloud-Nutzer müssen sich an den Apigee Edge-Support wenden, um diese Funktion zu aktivieren.

Two-Way-TLS konfigurieren

So konfigurieren Sie Two-Way-TLS:

  1. Erstellen Sie den Schlüsselspeicher in Edge und laden Sie das Zertifikat und den privaten Schlüssel hoch. Verwenden Sie dazu die hier beschriebene Vorgehensweise: Schlüsselspeicher und Truststores. Erstellen Sie in diesem Beispiel einen Schlüsselspeicher mit dem Namen myTestKeystore, der den Aliasnamen myKey für das Zertifikat und den privaten Schlüssel verwendet.
  2. Verwenden Sie den folgenden POST-API-Aufruf, um den Verweis named myKeyStoreRef auf den oben erstellten Schlüsselspeicher zu erstellen:

    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
    

    Die Referenz gibt den Namen des Schlüsselspeichers und den Referenztyp als KeyStore an.

    Verwenden Sie den folgenden GET-API-Aufruf, um die Referenz aufzurufen:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Wenn Sie das Backend-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge und laden Sie das Zertifikat und die Zertifizierungsstellenkette hoch, wie unter Schlüsselspeicher und Truststores beschrieben. Wenn Sie in diesem Beispiel einen Truststore erstellen müssen, nennen Sie ihn myTrustStore.
  4. Wenn Sie einen Truststore erstellt haben , verwenden Sie den folgenden POST-API-Aufruf, um den Verweis myTrustStoreRef auf den oben erstellten Truststore zu erstellen:

    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. Aktualisieren Sie die TargetEndpoint-Definition für den API-Proxy über die Edge-Verwaltungs-UI. Wenn Sie den API-Proxy in XML definieren, bearbeiten Sie die XML-Dateien für den Proxy:
    1. Melden Sie sich unter https://enterprise.apigee.com in der Edge-Verwaltungs-UI an.
    2. Wählen Sie im Menü der Edge-Verwaltungs-UI APIs aus.
    3. Wählen Sie den Namen des API-Proxys aus, den Sie aktualisieren möchten.
    4. Wählen Sie den Tab Development aus.
    5. Wählen Sie unter Target Endpoints die Option default aus.
    6. Bearbeiten Sie im Codebereich das Element <HTTPTargetConnection>, um das Element <SSLInfo> hinzuzufügen. Achten Sie darauf, den richtigen Schlüsselspeicher und den richtigen Schlüsselalias anzugeben und sowohl die <Enabled> als auch die <ClientAuthEnabled> Elemente auf „true“ zu setzen:
      <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. Speichern Sie den API-Proxy. Wenn der API-Proxy bereitgestellt wurde, wird er durch das Speichern mit der neuen Einstellung neu bereitgestellt.

Weitere Informationen zu den in <TargetEndpoint> verfügbaren Optionen, einschließlich der Verwendung von Variablen zur Angabe von TargetEndpoint <SSLInfo> Werten, finden Sie unter Referenz zur API-Proxy-Konfiguration.

SNI aktivieren

Edge unterstützt die Verwendung von Server Name Indication (SNI) von Nachrichtenprozessoren zu Ziel Endpunkten in Apigee Edge for Cloud und für Private Cloud-Bereitstellungen.

Um die Abwärtskompatibilität mit Ihren vorhandenen Ziel-Backends zu gewährleisten, hat Apigee SNI für Edge for Private Cloud standardmäßig deaktiviert. Wenn Ihr Ziel-Backend für die Unterstützung von SNI konfiguriert ist, können Sie diese Funktion aktivieren. Weitere Informationen finden Sie unter SNI mit Edge verwenden.