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:
- https://en.wikipedia.org/wiki/Server_Name_Indication
- http://blog.layershift.com/sni-ssl-production-ready/
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:
- Informationen zu virtuellen Hosts
- TLS -Zugriff auf eine API für die Private Cloud konfigurieren
- Schlüsselspeicher und Truststores
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:
- Bearbeiten Sie auf dem ersten Routerknoten die Datei
/opt/apigee/customer/application/router.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. - 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
- Starten Sie den Router neu:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 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:
- 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. - Ä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
- Bearbeiten Sie
/opt/apigee/customer/application/router.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. - 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 - Legen Sie in
router.propertiesdie 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
- Starten Sie den Router neu:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 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:
- Öffnen Sie auf dem ersten Message Processor-Knoten die Datei
/opt/apigee4/conf/apigee/message-processor/system.propertiesin einem Editor. - Setzen Sie die folgende Property in
system.propertiesauf „true“:jsse.enableSNIExtension=true
- Starten Sie die Message Processors neu:
/opt/apigee4/bin/apigee-service message-processor restart
- 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:
- 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. - Fügen Sie der Datei die folgende Property hinzu:
conf_system_jsse.enableSNIExtension=true
- Starten Sie den Message Processor neu:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Wiederholen Sie diese Schritte auf allen verbleibenden Message Processors.