SNI mit Edge verwenden

Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an.
info

Mit der 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, gibt der Client den Hostnamen des Zielendpunkts im Rahmen des ersten TLS-Handshakes weiter. So kann der TLS-Server ermitteln, welches TLS-Zertifikat zum Validieren der Anfrage verwendet werden soll.

Wenn das Anfrageziel 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:

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

Weitere Informationen zu SNI finden Sie unter:

Unterstützung von SNI für eine Anfrage an den API-Proxy in Edge

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

Virtuelle Hosts und Hostaliasse

Bei 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 damit auch die URL, die Apps zum Zugriff auf einen API-Proxy verwenden. Die IP-Adresse/der DNS-Name entspricht einem Edge-Router und die Portnummer ist ein offener Port auf dem Router.

Wenn Sie den virtuellen Host erstellen, geben Sie auch den Hostalias des virtuellen Hosts an. In der Regel ist dies der DNS-Name des virtuellen Hosts. Um den API-Proxy zu ermitteln, 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 wurden.

Die Kombination aus Hostalias 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 Hostaliasse haben.

Ein virtueller Host definiert auch, ob der Zugriff auf den API-Proxy über das HTTP-Protokoll oder das verschlüsselte HTTPS-Protokoll mit TLS erfolgt. Wenn Sie einen virtuellen Host für die Verwendung von HTTPS konfigurieren, ordnen Sie ihm einen Schlüsselspeicher zu, 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-Aliassen

Mit SNI können Sie mehrere virtuelle Hosts auf demselben Port definieren, die jeweils unterschiedliche TLS-Zertifikate und ‑Schlüssel haben. Edge bestimmt dann anhand der server_name-Erweiterung in der TLS-Handshake-Anfrage den virtuellen Host und das von TLS verwendete Zertifikat/Schlüsselpaar.

Der Edge-Router liest die server_name-Erweiterung in der TLS-Handshake-Anfrage und verwendet sie dann, um nach den Hostaliassen aller virtuellen Hosts zu suchen. Wenn der Router eine Übereinstimmung mit einem Hostalias erkennt, verwendet er das TLS-Zertifikat und den TLS-Schlüssel des virtuellen Hosts, der mit dem Hostalias 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 folgenden Abschnitten beschrieben.

Standard-Zertifikat/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 beim Bereitstellen lieber ihr eigenes Zertifikat und ihren eigenen privaten Schlüssel. Sie können Ihre APIs aber auch mit dem Apigee-Zertifikat und dem Apigee-Schlüssel bereitstellen.

Wenn der Router in Edge for the Cloud den SNI-Header nicht mit einem Hostalias abgleichen kann oder der Client SNI nicht unterstützt, verwendet er das von Apigee bereitgestellte Standardzertifikat *.apigee.net.

Standard-Zertifikat/Schlüsselpaar in Edge für die Private Cloud definieren

Wenn in Edge für die Private Cloud keine Übereinstimmung zwischen der server_name-Erweiterung und den Hostaliassen aller virtuellen Hosts gefunden wird oder der anfragende Client SNI nicht unterstützt, können Sie den Router so konfigurieren, dass das Zertifikat/der Schlüssel eines Standard-virtuellen Hosts auf dem Port verwendet wird. Der Standard-virtuelle Host wird durch eine Kombination aus dem Namen der Organisation, dem Namen der Umgebung und dem Namen des virtuellen Hosts im folgenden 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. Angenommen, die Anfrage kommt über Port 443 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 des virtuellen Hosts mit dem Namen default, da example_prod_default alphabetisch vor example_prod_test kommt.

So aktivieren Sie den Standard-virtuellen Host:

  1. Bearbeiten Sie auf dem ersten Routerknoten /opt/apigee/customer/application/router.properties. Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei das folgende Attribut hinzu, um einen Standard-virtuellen Host zu definieren:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Router neu starten:
    /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 des Standard-virtuellen Hosts zu verwenden, können Sie das Standardzertifikat/den Standardschlüssel explizit auf dem Router definieren. So definieren Sie ein explizites Standardzertifikat/Schlüsselpaar:

  1. Kopieren Sie das Zertifikat und den privaten Schlüssel auf dem ersten Routerknoten an einen Speicherort auf dem Routerknoten, auf den der Apigee-Nutzer zugreifen kann. Beispiel: /opt/apigee/customer/application.
  2. Ändern Sie die Eigentümerschaft der Dateien in „apigee. user“:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. /opt/apigee/customer/application/router.properties bearbeiten Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.
  4. Fügen Sie der Datei die folgenden Properties hinzu, um das Standardzertifikat/den Standardschlüssel anzugeben:
    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 die folgenden Properties in router.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. Router neu starten:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Wiederholen Sie diese Schritte auf allen verbleibenden Routern.

Unterstützung von SNI für Anfragen von Edge an das Backend

Edge unterstützt die Verwendung von SNI von Nachrichtenprozessoren für Endpunkte in Apigee Edge for Cloud und für 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 Backend in Edge für die Private Cloud verwenden

Damit Edge for Private Cloud abwärtskompatibel mit vorhandenen Ziel-Backends ist, hat Apigee SNI 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 Version von Edge aktivieren.

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

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

So aktivieren Sie SNI:

  1. Öffnen Sie die Datei /opt/apigee4/conf/apigee/message-processor/system.properties im ersten Knoten „Message Processor“ in einem Editor.
  2. Legen Sie die folgende Property in system.properties auf „wahr“ fest:
    jsse.enableSNIExtension=true
  3. Starten Sie die Message Processors neu:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Wiederholen Sie diese Schritte für alle verbleibenden Nachrichten-Prozessoren.

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

So aktivieren Sie SNI:

  1. Bearbeiten Sie im ersten Knoten des Nachrichten-Prozessors /opt/apigee/customer/application/message-processor.properties. Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei das folgende Attribut 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 für alle verbleibenden Nachrichten-Prozessoren.