SNI mit Edge verwenden

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

Mit Server Name Indication (SNI) können mehrere HTTPS-Ziele über dieselbe IP Adresse und denselben Port bereitgestellt werden, ohne dass diese Ziele dasselbe TLS-Zertifikat verwenden müssen. Wenn SNI auf einem Client aktiviert ist, übergibt der Client den Hostnamen des Zielendpunkts als Teil des ersten TLS-Handshakes. So kann der TLS-Server bestimmen, welches TLS-Zertifikat zur Validierung der Anfrage verwendet werden soll.

Wenn das Ziel der Anfrage beispielsweise https://example.com/request/path, ist, fügt der TLS-Client der TLS-Handshake Anfrage die Erweiterung server_name hinzu, wie unten dargestellt:

Edge unterstützt SNI für folgende Anfragen:

  • Anfragen von einer Clientanwendung an einen API-Proxy. In diesem Fall fungiert Edge als TLS Server.
  • Anfragen von Edge an das Back-End. In diesem Fall fungiert Edge als TLS-Client.

Weitere Informationen zu SNI finden Sie unter:

SNI für eine Anfrage an einen API-Proxy in Edge unterstützen

Die SNI-Unterstützung für Anfragen an API-Proxys wird über Host-Aliase und virtuelle Hosts gesteuert.

Informationen zu virtuellen Hosts und Host-Aliasen

In Edge definiert ein virtueller Host die IP-Adresse und den Port oder den DNS-Namen und den Port, über die ein API-Proxy verfügbar gemacht wird, und danach die URL, die Anwendungen zum Aufrufen eines API-Proxys verwenden. Die IP-Adresse/der DNS-Name entspricht einem Edge-Router und die Portnummer einem offenen Port auf dem Router.

Wenn Sie den virtuellen Host erstellen, geben Sie auch den Host-Alias des virtuellen Hosts an. In der Regel ist dies der DNS-Name des virtuellen Hosts. Um den API-Proxy zu bestimmen, der die Anfrage verarbeitet, vergleicht der Router den Host Header der eingehenden Anfrage mit der Liste der verfügbaren Host-Aliase, die von allen virtuellen Hosts definiert werden.

Die Kombination aus Host-Alias und Portnummer für den virtuellen Host muss für alle virtuellen Hosts in der Edge-Installation eindeutig sein. Das bedeutet, dass mehrere virtuelle Hosts dieselbe Portnummer verwenden können , wenn sie unterschiedliche Host-Aliase haben.

Ein virtueller Host definiert auch, ob auf den API-Proxy über das HTTP-Protokoll oder über das verschlüsselte HTTPS-Protokoll mit TLS zugegriffen wird. Wenn Sie einen virtuellen Host für die Verwendung von HTTPS konfigurieren, verknüpfen Sie den virtuellen Host mit einem Schlüsselspeicher, der das Zertifikat und den privaten Schlüssel enthält, die vom virtuellen Host während des TLS-Handshakes verwendet werden.

Weitere Informationen zu virtuellen Hosts finden Sie unter:

So funktioniert SNI mit Host-Aliasen

Mit SNI können Sie mehrere virtuelle Hosts auf demselben Port definieren, jeweils mit unterschiedlichen TLS-Zertifikaten und -Schlüsseln. Edge bestimmt dann den virtuellen Host und das Zertifikat/Schlüsselpaar, das von TLS, anhand der server_name Erweiterung in der TLS-Handshake-Anfrage.

Der Edge-Router liest die server_name Erweiterung in der TLS-Handshake Anfrage und sucht dann nach den Host-Aliasen aus allen virtuellen Hosts. Wenn der Router eine Übereinstimmung mit einem Host-Alias findet, verwendet er das TLS-Zertifikat und den TLS-Schlüssel aus dem virtuellen Host, der mit dem Host-Alias verknüpft ist. Wenn keine Übereinstimmung gefunden wird, schlägt der TLS-Handshake fehl.

Anstatt den TLS-Handshake fehlschlagen zu lassen, können Sie ein Standardzertifikat/Schlüsselpaar definieren, wie in den nächsten Abschnitten beschrieben.

Standardzertifikat/Schlüsselpaar in Edge für die Cloud definieren

Apigee stellt ein TLS-Zertifikat und einen privaten Schlüssel zur Verfügung, um HTTPS zu unterstützen. Viele Kunden verwenden bei der Bereitstellung lieber ihr eigenes Zertifikat und ihren eigenen privaten Schlüssel. Sie können Ihre APIs aber auch mit dem von Apigee bereitgestellten Zertifikat und Schlüssel bereitstellen.

Wenn der Router in Edge für die Cloud den SNI-Header nicht mit einem Host-Alias abgleichen kann oder der Client SNI nicht unterstützt, verwendet der Router das von Apigee bereitgestellte Standardzertifikat, nämlich „*.apigee.net“.

Standardzertifikat/Schlüsselpaar in Edge für die Private Cloud definieren

Wenn in Edge für die Private Cloud keine Übereinstimmung zwischen der Erweiterung server_name und den Host-Aliasen aller virtuellen Hosts gefunden wird oder der anfragende Client SNI nicht unterstützt, können Sie den Router so konfigurieren, dass er das Zertifikat/den Schlüssel von einem virtuellen Standardhost auf dem Port verwendet. Der virtuelle Standardhost wird durch eine Kombination aus Organisationsname, Umgebungsname und Name des virtuellen Hosts in folgendem Format definiert:

orgName_envName_vhName

Der Router verwendet das Zertifikat/den Schlüssel aus der Kombination von orgName_envName_vhName, die in alphabetischer Reihenfolge zuerst kommt. Beispiel: Die Anfrage kommt auf Port 443 an und es sind zwei virtuelle Hosts für die Organisation example in der Umgebung prod definiert:

  • Name des virtuellen Hosts = default
  • Name des virtuellen Hosts = test

In diesem Beispiel verwendet der Router das Zertifikat/den Schlüssel vom virtuellen Host mit dem Namen default da example_prod_default in alphabetischer Reihenfolge vor example_prod_test kommt.

So aktivieren Sie den virtuellen Standardhost:

  1. Bearbeiten Sie auf dem ersten Routerknoten die Datei /opt/apigee/customer/application/router.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei die folgende Property hinzu, damit Sie einen virtuellen Standardhost definieren können:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Starten Sie den Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. Wiederholen Sie diese Schritte auf allen verbleibenden Routern.

Anstatt das Zertifikat/den Schlüssel vom virtuellen Standardhost zu verwenden, können Sie das Standardzertifikat/den Standardschlüssel explizit auf dem Router definieren. So definieren Sie ein explizites Standard Zertifikat/Schlüsselpaar:

  1. Kopieren Sie auf dem ersten Routerknoten das Zertifikat und den privaten Schlüssel an einen Speicherort auf dem Routerknoten auf den der Apigee-Nutzer zugreifen kann. Beispiel: /opt/apigee/customer/application.
  2. Ändern Sie die Inhaberschaft der Dateien in den Apigee-Nutzer:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. Bearbeiten Sie /opt/apigee/customer/application/router.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.
  4. Fügen Sie der Datei die folgenden Properties hinzu, damit Sie das Standardzertifikat/den Standardschlüssel angeben können:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. Legen Sie in router.properties die folgenden Properties fest, um den Speicherort des Zertifikats und des Schlüssels anzugeben:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. Starten Sie den Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Wiederholen Sie diese Schritte auf allen verbleibenden Routern.

SNI für Anfragen von Edge an das Back-End unterstützen

Edge unterstützt die Verwendung von SNI von Message Processors zu Zielendpunkten in Apigee Edge für Cloud- und Private Cloud-Bereitstellungen. Standardmäßig ist SNI auf Edge Message Processors für die Cloud aktiviert und in der Private Cloud deaktiviert.

SNI für das Back-End in Edge für die Private Cloud verwenden

Um die Abwärtskompatibilität mit vorhandenen Ziel-Back-Ends zu gewährleisten, hat Apigee SNI für Edge für die Private Cloud standardmäßig deaktiviert. Wenn Ihr Ziel-Back-End für die Unterstützung von SNI konfiguriert ist, können Sie diese Funktion wie unten beschrieben für Ihre Edge-Version aktivieren.

Es ist keine weitere Edge-spezifische Konfiguration erforderlich. Wenn Ihre Zielumgebung für SNI konfiguriert ist, wird sie von Edge unterstützt. Edge extrahiert automatisch den Hostnamen aus der Anfrage-URL und fügt ihn der TLS-Handshake-Anfrage hinzu.

SNI zwischen Edge und dem Back-End für Edge Version 4.15.07.0x aktivieren

So aktivieren Sie SNI:

  1. Öffnen Sie auf dem ersten Message Processor-Knoten die Datei /opt/apigee4/conf/apigee/message-processor/system.properties in einem Editor.
  2. Setzen Sie die folgende Property in system.properties auf „true“:
    jsse.enableSNIExtension=true
  3. Starten Sie die Message Processors neu:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Wiederholen Sie diese Schritte auf allen verbleibenden Message Processors.

SNI zwischen Edge und dem Back-End für Edge Version 4.16.01 und höher aktivieren

So aktivieren Sie SNI:

  1. Bearbeiten Sie auf dem ersten Message Processor-Knoten die Datei /opt/apigee/customer/application/message-processor.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei die folgende Property hinzu:
    conf_system_jsse.enableSNIExtension=true
  3. Starten Sie den Message Processor neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Wiederholen Sie diese Schritte auf allen verbleibenden Message Processors.