SNI mit Edge verwenden

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

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 anfänglichen TLS-Handshakes. Dadurch kann der TLS-Server bestimmen, 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-Handshakeanfrage 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 Back-End. 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 durch Hostaliasse 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 folglich die URL, über die Apps auf einen API-Proxy zugreifen. 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. Zur Bestimmung des API-Proxys, der die Anfrage verarbeitet, vergleicht der Router den Host-Header der eingehenden Anfrage mit der Liste der verfügbaren Hostaliasse, die von allen virtuellen Hosts definiert sind.

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 außerdem, ob der Zugriff auf den API-Proxy über das HTTP-Protokoll oder über das verschlüsselte HTTPS-Protokoll mit TLS erfolgt. 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:

Funktionsweise von SNI mit Hostaliassen

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

Der Edge Router liest die Erweiterung server_name in der TLS-Handshakeanfrage und sucht dann damit nach den Hostaliassen von allen virtuellen Hosts. Wenn der Router eine Übereinstimmung mit einem Hostalias erkennt, verwendet er das TLS-Zertifikat und den TLS-Schlüssel des virtuellen Hosts, der dem Hostalias zugeordnet ist. Wenn keine Übereinstimmung gefunden wird, schlägt das 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 bietet ein TLS-Zertifikat und einen privaten Schlüssel zur Unterstützung von HTTPS. Viele Kunden bevorzugen bei der Bereitstellung die Verwendung ihres eigenen Zertifikats und ihres privaten Schlüssels. Sie können Ihre APIs aber auch mit dem Apigee-Zertifikat und -Schlüssel bereitstellen.

Wenn der Router in Edge für die Cloud den SNI-Header nicht mit einem Hostalias 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 Hostaliassen aller virtuellen Hosts gefunden wird oder der anfragende Client SNI nicht unterstützt, können Sie den Router so konfigurieren, dass er das Zertifikat bzw. den Schlüssel von einem virtuellen Standardhost am Port verwendet. Der virtuelle Standardhost wird durch eine Kombination aus Organisationsname, Umgebungsname und virtuellem Hostnamen in folgendem Format definiert:

orgName_envName_vhName

Der Router verwendet das Zertifikat bzw. den Schlüssel aus der Kombination von orgName_envName_vhName, die in alphabetischer Reihenfolge an erster Stelle steht. Wenn die Anfrage beispielsweise über Port 443 ankommt, sind zwei virtuelle Hosts für die Organisation example in der Umgebung prod definiert:

  • Virtueller Hostname = default
  • Virtueller Hostname = test

In diesem Beispiel verwendet der Router das Zertifikat bzw. den Schlüssel vom virtuellen Host mit dem Namen default, da example_prod_default alphabetisch vor example_prod_test steht.

So aktivieren Sie den virtuellen Standardhost:

  1. Bearbeiten Sie /opt/apigee/customer/application/router.properties auf dem ersten Routerknoten. Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei das folgende Attribut 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 für alle verbleibenden Router.

Anstatt das Zertifikat bzw. den Schlüssel des virtuellen Standardhosts zu verwenden, können Sie das Standardzertifikat bzw. den Standardschlüssel auf dem Router explizit definieren. Gehen Sie so vor, um ein explizites Standardzertifikat/Schlüsselpaar zu definieren:

  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 Eigentümerschaft der Dateien in den Apigee-Benutzer:
    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 Attribute hinzu, damit Sie das Standardzertifikat bzw. 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 die folgenden Attribute 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. Starten Sie den Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Wiederholen Sie diese Schritte für alle verbleibenden Router.

Unterstützung von SNI für Anfragen von Edge an das Back-End

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

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

Damit Edge für die Private Cloud mit 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 wie unten für Ihre Version von Edge beschrieben aktivieren.

Es ist keine andere Edge-spezifische Konfiguration erforderlich. Wenn Ihre Zielumgebung für SNI konfiguriert ist, wird dies von Edge unterstützt. Edge extrahiert den Hostnamen automatisch aus der Anfrage-URL und fügt ihn der TLS-Handshakeanfrage 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. Legen Sie die folgende Property in system.properties auf „true“ fest:
    jsse.enableSNIExtension=true
  3. Starten Sie die Nachrichtenprozessoren neu:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Wiederholen Sie diese Schritte auf allen verbleibenden Message Processorn.

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 /opt/apigee/customer/application/message-processor.properties auf dem ersten Message Processor-Knoten. 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 auf allen verbleibenden Message Processorn.