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

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Ein API-Proxy fungiert als Zuordnung eines öffentlich verfügbaren Endpunkts zu Ihrem Back-End-Dienst. Ein virtueller Host definiert, wie der öffentliche API-Proxy für eine Anwendung freigegeben wird. Der virtuelle Host bestimmt beispielsweise, ob der API-Proxy über TLS aufgerufen werden kann. Wenn Sie einen API-Proxy konfigurieren, bearbeiten Sie seine ProxyEndpoint-Definition, um die verwendeten virtuellen Hosts zu konfigurieren.

Der TargetEndpoint ist das ausgehende Äquivalent des ProxyEndpoint. Ein TargetEndpoint fungiert als HTTP-Client von Edge zu einem Back-End-Dienst. Beim Erstellen eines API-Proxys können Sie ihn so konfigurieren, dass er null oder mehr TargetEndpunkte verwendet.

Weitere Informationen:

TargetEndpoint oder TargetServer konfigurieren

Um einen TargetEndpoint zu konfigurieren, 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 Sie bearbeiten sie in der Edge-Management-Benutzeroberfläche.

So bearbeiten Sie den TargetEndpoint mit der Edge-Verwaltungs-UI:

  1. Melden Sie sich bei der Edge-Management-Benutzeroberfläche unter https://enterprise.apigee.com an.
  2. Wählen Sie den Namen des zu aktualisierenden API-Proxys aus.
  3. Wählen Sie den Tab Develop aus.
  4. Wählen Sie unter Zielendpunkte die Option Standard aus.
  5. Im Codebereich wird die TargetEndpoint-Definition ähnlich wie unten angezeigt:
    <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 TLS-Konfiguration mit dem Back-End beschrieben.
  7. Nehmen Sie die gewünschten Änderungen vor und speichern Sie den Proxy. Wenn der API-Proxy bereitgestellt wurde, wird er beim Speichern mit der neuen Einstellung neu bereitgestellt.

Die TargetEndpoint-Definition enthält das Attribut name. Sie verwenden den Wert des Attributs name, um die ProxyEndpoint-Definition eines API-Proxys für die Verwendung des TargetEndpoint zu konfigurieren. Weitere Informationen finden Sie unter API-Proxy-Konfigurationsreferenz.

TargetEndpunkte kann so konfiguriert werden, dass es auf einen TargetServer anstatt auf die explizite Ziel-URL verweist. Eine TargetServer-Konfiguration entkoppelt konkrete Endpunkt-URLs von TargetEndpoint-Konfigurationen. Zielserver werden verwendet, um Load-Balancing und Failover über mehrere Back-End-Serverinstanzen hinweg 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> 

Ein TargetServer wird in einer TargetEndpoint-Definition mit dem Namen im Element <HTTPTargetConnection> referenziert. Sie können einen oder mehrere benannte Zielserver 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 auf Back-End-Servern.

TLS-Konfiguration mit dem Back-End

Bevor Sie den TLS-Zugriff auf das Back-End konfigurieren, sollten Sie sich mit zwei wichtigen Punkten vertraut machen:

  1. Standardmäßig validiert Edge das Back-End-Zertifikat nicht. Sie müssen einen Truststore erstellen, um Edge für die Validierung des Zertifikats zu konfigurieren.
  2. Verwenden Sie einen Verweis, um den von Edge verwendeten Schlüsselspeicher oder Truststore anzugeben.

Beide Überlegungen werden im Folgenden beschrieben.

Truststore zum Aktivieren der Zertifikatsprüfung definieren

Wenn Sie eine TLS-Anfrage über einen TargetEndpoint oder TargetServer stellen, validiert Edge nicht standardmäßig das vom Back-End-Server empfangene TLS-Zertifikat. Dies bedeutet, dass Edge Folgendes nicht validiert:

  • Das Zertifikat wurde von einer vertrauenswürdigen Zertifizierungsstelle signiert.
  • Das Zertifikat ist noch nicht abgelaufen.
  • Das Zertifikat stellt einen allgemeinen Namen dar. Wenn es einen gemeinsamen Namen gibt, validiert Edge nicht, dass der allgemeine Name mit dem in der URL angegebenen Hostnamen übereinstimmt.

Um Edge für die Validierung des Back-End-Zertifikats zu konfigurieren, müssen Sie:

  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 ist, müssen Sie die vollständige Zertifikatkette, einschließlich des Zertifikat der Stammzertifizierungsstelle, in den Truststore hochladen. Es gibt keine implizit vertrauenswürdigen Zertifizierungsstellen.
  3. Fügen Sie der TargetEndpoint- oder TargetServer-Definition den Truststore 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

Das folgende Beispiel zeigt, wie ein TargetEndpoint oder TargetServer für TLS konfiguriert wird. Im Rahmen der Konfiguration von TLS geben Sie einen Truststore und einen Schlüsselspeicher als Teil einer TargetEndpoint- oder TargetServer-Definition an.

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

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

TargetEndpoint oder TargetServer für die Verwendung eines Verweises konvertieren

Möglicherweise haben Sie bereits TargetEndpoint- oder TargetServer-Definitionen, die den literalen Namen des Keystores und Truststores verwenden. So konvertieren Sie die TargetEndpoint- oder TargetServer-Definition zur Verwendung von Referenzen:

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

One-Way-TLS zum Back-End-Server konfigurieren

Wenn Sie eine TargetEndpoint-Definition verwenden, ist für das Konfigurieren des unidirektionalen TLS-Zugriffs von Edge (TLS-Client) auf den Back-End-Server (TLS-Server) keine zusätzliche Konfiguration in Edge erforderlich. Der Back-End-Server muss TLS korrekt konfigurieren.

Sie müssen lediglich darauf achten, dass das Element <URL> in der TargetEndpoint-Definition über das HTTPS-Protokoll auf den Back-End-Dienst verweist und dass TLS aktiviert ist:

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

Wenn Sie einen TargetServer verwenden, um den Back-End-Dienst zu 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 Back-End-Zertifikat validiert, müssen Sie einen Truststore erstellen, der das Back-End-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 Back-End-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge und laden Sie das Back-End-Zertifikat oder die CA-Kette 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 mit dem Namen myTrustStoreRef für 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. Verwenden Sie die Edge-Management-Benutzeroberfläche, um die TargetEndpoint-Definition für den API-Proxy zu aktualisieren (oder, wenn Sie den API-Proxy in XML definieren, bearbeiten Sie die XML-Dateien für den Proxy):
    1. Melden Sie sich bei der Edge-Verwaltungs-Benutzeroberfläche unter https://enterprise.apigee.com an.
    2. Wählen Sie im Menü der Benutzeroberfläche der Edge-Verwaltung die Option APIs aus.
    3. Wählen Sie den Namen des zu aktualisierenden API-Proxys aus.
    4. Wählen Sie den Tab Development (Entwicklung) aus.
    5. Wählen Sie unter Zielendpunkte die Option Standard aus.
    6. Bearbeiten Sie im Codebereich das Element <HTTPTargetConnection> und fügen Sie das Element <SSLInfo> hinzu. Achten Sie darauf, die richtige Truststore-Referenz 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 beim Speichern mit der neuen Einstellung neu bereitgestellt.

Zwei-Wege-TLS zum Back-End-Server konfigurieren

Wenn Sie Zwei-Wege-TLS zwischen Edge (TLS-Client) und dem Back-End-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 Back-End-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge, der das Zertifikat und die CA-Kette enthält, die Sie vom Back-End-Server erhalten haben.
  • Aktualisieren Sie den TargetEndpoint aller API-Proxys, die auf den Back-End-Server verweisen, um den TLS-Zugriff zu konfigurieren.

Schlüsselalias zum Angeben des Schlüsselspeicherzertifikats verwenden

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

Optional können Sie Edge so konfigurieren, dass das durch das Attribut <KeyAlias> angegebene Zertifikat verwendet wird. Auf diese Weise können Sie einen einzelnen Schlüsselspeicher für mehrere Zertifikate definieren und dann das Zertifikat auswählen, das Sie in der TargetServer-Definition verwenden möchten. Wenn Edge kein Zertifikat mit einem Alias finden kann, das mit <KeyAlias> übereinstimmt, wird die Standardaktion verwendet, das erste Zertifikat im Schlüsselspeicher auszuwählen.

Nutzer von Edge für öffentliche Clouds müssen sich an den Apigee Edge-Support wenden, um dieses Feature zu aktivieren.

Zwei-Wege-TLS konfigurieren

So konfigurieren Sie die Zwei-Wege-TLS-Konfiguration:

  1. Erstellen Sie den Schlüsselspeicher in Edge und laden Sie das Zertifikat und den privaten Schlüssel mit dem hier beschriebenen Verfahren hoch: 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 mit dem Namen myKeyStoreRef für 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
    

    Der Verweis 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 Back-End-Zertifikat validieren möchten, erstellen Sie einen Truststore in Edge und laden Sie das Zertifikat und die Zertifizierungsstellenkette hoch, wie hier beschrieben: Schlüsselspeicher und Truststores. Wenn Sie beispielsweise 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 mit dem Namen myTrustStoreRef für 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. Verwenden Sie die Edge-Management-Benutzeroberfläche, um die TargetEndpoint-Definition für den API-Proxy zu aktualisieren (oder, wenn Sie den API-Proxy in XML definieren, bearbeiten Sie die XML-Dateien für den Proxy):
    1. Melden Sie sich bei der Edge-Management-Benutzeroberfläche unter https://enterprise.apigee.com an.
    2. Wählen Sie im Menü der Benutzeroberfläche der Edge-Verwaltung die Option APIs aus.
    3. Wählen Sie den Namen des zu aktualisierenden API-Proxys aus.
    4. Wählen Sie den Tab Development (Entwicklung) aus.
    5. Wählen Sie unter Zielendpunkte die Option Standard aus.
    6. Bearbeiten Sie im Codebereich das Element <HTTPTargetConnection> und fügen Sie das Element <SSLInfo> hinzu. Geben Sie unbedingt den richtigen Schlüsselspeicher und Schlüsselalias an und setzen Sie die Elemente <Enabled> und <ClientAuthEnabled> auf „true“:
      <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 beim Speichern mit der neuen Einstellung neu bereitgestellt.

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

SNI wird aktiviert

Edge unterstützt die Verwendung von Server Name Indication (SNI) von Message Processorn, um Endpunkte in Apigee Edge für Cloud- und Private Cloud-Bereitstellungen anzusteuern.

Damit Edge für die Private Cloud mit Ihren vorhandenen Ziel-Back-Ends abwärtskompatibel ist, hat Apigee SNI standardmäßig deaktiviert. Wenn Ihr Ziel-Back-End für die Unterstützung von SNI konfiguriert ist, können Sie dieses Feature aktivieren. Weitere Informationen finden Sie unter SNI mit Edge verwenden.