TLS für API BaaS konfigurieren

Edge for Private Cloud Version 4.17.01

TLS (Transport Layer Security, dessen Vorgänger SSL ist) ist die Standardsicherheitstechnologie für sichere, verschlüsselte Nachrichten in Ihrer API-Umgebung. Sie können TLS für API BaaS-Portal- und API BaaS-Stack-Knoten konfigurieren.

Die folgende Abbildung zeigt ein typisches Bereitstellungsdiagramm für API BaaS mit einem einzelnen BaaS-Portalknoten und drei API BaaS-Stack-Knoten.

Entwickler senden Anfragen an das Portal über einen Browser. Standardmäßig verwenden die Anfragen das HTTP-Protokoll an Port 9000 des Portalknotens.

Diese Bereitstellung umfasst einen Load Balancer zwischen den Portal- und Stack-Knoten. In dieser Konfiguration sendet das Portal HTTP-Anfragen an den Load-Balancer, die dann an einen der Stackknoten weitergeleitet werden. Dies ist die empfohlene Bereitstellungsumgebung für ein Produktionssystem.

TLS-Konfigurationsoptionen

Beim Konfigurieren von TLS für API BaaS haben Sie mehrere Möglichkeiten:

  • TLS im Portal und im Load Balancer für die Stack-Knoten konfigurieren

    In dieser Konfiguration verwenden Entwickler das HTTPS-Protokoll, um auf das Portal zuzugreifen. Das im Browser ausgeführte Portal sendet dann über den Load Balancer HTTPS-Anfragen an die Stack-Knoten. Der Load Balancer verwendet HTTP, um auf die Stack-Knoten zuzugreifen.
  • TLS im Portal, Load Balancer und Stack-Knoten konfigurieren

    Für zusätzliche Sicherheit konfigurieren Sie den Load Balancer so, dass er TLS für den Zugriff auf die Stack-Knoten verwendet.
  • Konfigurieren Sie TLS auf dem Portal und auf einem einzelnen Stackknoten

    In einer kleinen Umgebung, z. B. in einer Test- oder Entwicklungsumgebung, haben Sie möglicherweise nur einen einzigen Stackknoten, sodass kein Load-Balancer erforderlich ist. Konfigurieren Sie in dieser Konfiguration TLS sowohl auf den Portal- als auch auf den Stackknoten.
  • TLS auf einem Load Balancer für das Portal konfigurieren

    Eine Option, die oben nicht aufgeführt ist, ist die Verwendung eines Load Balancers vor dem Portalknoten. In dieser Konfiguration können Sie TLS auf dem Load Balancer und optional auf der Verbindung zwischen dem Load Balancer und dem Portal konfigurieren.

Achten Sie darauf, dass der TLS-Port geöffnet ist

Mit den folgenden Verfahren wird TLS für den standardmäßigen Portalport 9000 und den Stackknoten 8080 konfiguriert. Sie können diesen Port jedoch bei Bedarf ändern.

Unabhängig vom verwendeten Port muss er am Knoten geöffnet sein. Sie können beispielsweise den folgenden Befehl verwenden, um Port 8443 zu öffnen:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

TLS im API-BaaS-Stack konfigurieren

TLS ist für den API BaaS-Stack standardmäßig deaktiviert. Sie greifen dann über die IP-Adresse oder den DNS-Namen des Stack-Knotens und den Port 8080 auf die BaaS API zu. Beispiel:

http://stack_IP:8080

Alternativ können Sie den TLS-Zugriff auf die BaaS API so konfigurieren, dass Sie auf sie zugreifen können:

https://stack_IP:8080

In diesem Beispiel konfigurieren Sie den TLS-Zugriff für die Verwendung von Port 8080. Port 8080 ist jedoch nicht erforderlich. Sie können den Stack so konfigurieren, dass ein anderer Port verwendet wird. Die einzige Voraussetzung ist, dass Ihre Firewall den Traffic über den angegebenen Port zulässt.

Der Stack kann nur einen Anfragetyp (HTTP oder HTTPS) über einen einzelnen Port unterstützen. Wenn Sie also den HTTPS-Zugriff auf Port 8080 konfigurieren, können Sie nicht über HTTP auf Port 8080 zugreifen. Wenn Sie den Stack so konfigurieren, dass er Port 8443 mit HTTPS verwendet, überwacht er nicht mehr Port 8080.

So konfigurieren Sie den TLS-Zugriff auf den Stack:

  1. Generieren Sie die JKS-Keystore-Datei mit Ihrer TLS-Zertifizierung und Ihrem privaten Schlüssel. Weitere Informationen finden Sie unter TLS/SSL für Edge On Premises konfigurieren.
    Hinweis: Das Passwort für den Schlüsselspeicher und den Schlüssel muss identisch sein.
  2. Kopieren Sie die JKS-Datei des Schlüsselspeichers in ein Verzeichnis auf dem Stackknoten, z. B. /opt/apigee/customer/application. Das Verzeichnis muss für den Apigee-Benutzer zugänglich sein.
  3. Ändern Sie die Inhaberschaft der JKS-Datei in den Nutzer „apigee“:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    wobei keystore.jks der Name der Schlüsselspeicherdatei ist.
  4. Bearbeiten Sie die Datei /opt/apigee/customer/application/usergrid.properties, um die folgenden Attribute festzulegen, einschließlich des Pfads zur JKS-Datei und des Passworts für den Schlüsselspeicher und Schlüssel.









    /opt/apigee/customer/application/keystore.jks
    # Mit diesem Attribut können Sie einen anderen Port angeben.
    # tomcat-server_port=8080


    Warnung: Der Wert für password muss im Klartext angegeben werden. Daher sollten Sie usergrid.properties vor unbefugtem Zugriff schützen.

    Verwenden Sie das Attribut tomcat-server_keyalias, um den Alias des Schlüsselspeichers anzugeben. Sie haben den Schlüsselalias festgelegt, als Sie den Schlüssel erstellt haben. Sie können ihn beispielsweise mit der Option -alias für den Befehl keytool festlegen.

    Mit tomcat-server_ssl.protocols lassen sich die vom Stack unterstützten TLS-Protokolle festlegen. Eine Liste der von Java 8 unterstützten Protokolle finden Sie unter http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Konfigurieren Sie den Stack-Knoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Starten Sie den BaaS-Stack neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid erneutstart
  7. Prüfen Sie, ob TLS funktioniert, indem Sie den folgenden cURL-Befehl auf dem Stack-Knoten mit HTTPS ausführen:
    > curl -k https://localhost:8080/status -v

    Wenn TLS richtig konfiguriert ist, sollte eine Antwort mit Statusinformationen angezeigt werden.

    Wenn Sie den TLS-Zugriff über einen anderen Port als 8080 konfiguriert haben, ändern Sie den obigen Befehl so, dass der richtige Port verwendet wird.
  8. Wiederholen Sie diese Schritte für alle Stackknoten.
  9. Wenn Sie einen Load Balancer vor den Stack-Knoten haben, konfigurieren Sie den Load Balancer so, dass er Anfragen an die Stack-Knoten über HTTPS sendet. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Load Balancer.

    Wenn das Portal direkte Anfragen an den Stack sendet, konfigurieren Sie das Portal so, dass es wie im folgenden Abschnitt beschrieben über HTTPS auf den Stack zugreift.
  10. Führen Sie die unten unter „API BaaS-Stack-Knoten für TLS im Stack oder Portal konfigurieren“ beschriebene Vorgehensweise aus, um sicherzustellen, dass der Stack-Knoten die richtigen TLS-URLs hat, wenn Nutzerantworten generiert werden.

Portal für den Zugriff auf den Stack über TLS konfigurieren

Das BaaS-Portal, das in einem Browser ausgeführt wird, funktioniert durch API-Aufrufe an den BaaS-Stack. Wenn Sie den BaaS-Stack für die Verwendung von TLS konfigurieren, müssen Sie auch das Portal so konfigurieren, dass diese Aufrufe über HTTPS erfolgen.

Eine API-BaaS-Installation ist in der Regel für Folgendes konfiguriert:

  • Load Balancer zwischen dem Portal und den Stack-Knoten verwenden

    Konfigurieren Sie den Load Balancer so, dass er Anfragen an die Stack-Knoten über HTTPS sendet. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Load Balancer.

    In dieser Konfiguration kann das Portal je nach Konfiguration des Load Balancers über HTTP oder HTTPS auf den Load Balancer zugreifen. Wenn der Load-Balancer TLS verwendet, konfigurieren Sie das Portal mit dem folgenden Verfahren so, dass Anfragen an den Load-Balancer von HTTPS gesendet werden.
  • Direkte Anfragen des Portals an den Stack

    Konfigurieren Sie das Portal wie unten beschrieben, damit es über HTTPS auf den Stack zugreift.

So konfigurieren Sie das API BaaS-Portal für API-Aufrufe über HTTPS:

  1. Konfigurieren Sie den TLS-Zugriff auf dem BaaS-Stack wie oben beschrieben oder auf dem Load-Balancer für die Stackknoten, wie in der Dokumentation für Ihren Load-Balancer beschrieben.
  2. Bearbeiten Sie /opt/apigee/customer/application/portal.properties, um die folgende Property festzulegen. Falls die Datei nicht vorhanden ist, erstellen Sie sie:
    baas.portal.config.overrideUrl=https://stackIP:port

    Geben Sie als Wert für dieses Attribut die IP-Adresse oder den DNS-Namen und den Port des API-Stack-Knotens für eine Installation mit einem Knoten an. Bei einer Installation mit einem einzelnen Knoten können Sie auch den Load-Balancer angeben, wenn vor den BaaS-Stack-Knoten der API ein Load-Balancer vorhanden ist.
  3. Portalknoten konfigurieren:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Starten Sie das Portal mit dem Befehl:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Wenn Sie beim Konfigurieren des TLS-Zugriffs auf den Stack oben ein selbst signiertes Zertifikat verwendet haben, erlaubt Ihr Browser möglicherweise keine Anfragen an den Stack über das Portal. Wenn im Browser die Fehlermeldung angezeigt wird, dass der HTTPS-Zugriff auf den Stack nicht zulässig ist, rufen Sie die folgende URL in Ihrem Browser auf und fügen Sie eine Sicherheitsausnahme hinzu, um den Zugriff zuzulassen:
    https://stackIP:port/status

    Geben Sie die IP-Adresse oder den DNS-Namen und den Port des API-Stack-Knotens oder Load Balancers an.

TLS im API BaaS-Portal konfigurieren

Standardmäßig greifen Nutzer auf das Portal zu, indem sie unverschlüsselte HTTP-Anfragen über Port 9000 auf dem Portalserver stellen. Sie können das Portal so konfigurieren, dass die Daten, die an das Portal und vom Portal gesendet werden, mit HTTPS verschlüsselt werden.

Standardmäßig greifen Sie über HTTP auf das Portal zu. Verwenden Sie dazu die IP-Adresse oder den DNS-Namen des Portalknotens und Port 9000. Beispiel:

http://portal_IP:9000

Alternativ können Sie den TLS-Zugriff auf das Portal so konfigurieren, dass Sie im folgenden Format darauf zugreifen können:

https://portal_IP:9443

In diesem Beispiel konfigurieren Sie den TLS-Zugriff für die Verwendung von Port 9443. Port 9443 ist jedoch nicht erforderlich. Sie können das Portal so konfigurieren, dass ein anderer Port verwendet wird.

Das Portal kann nur einen Anfragetyp (HTTP oder HTTPS) über einen einzelnen Port unterstützen. Wenn Sie den HTTPS-Zugriff auf Port 9000 konfigurieren, können Sie daher nicht über HTTP auf Port 9000 zugreifen. Wenn Sie das Portal so konfigurieren, dass es Port 9443 mit HTTPS verwendet, überwacht es nicht mehr Port 9000.

So konfigurieren Sie TLS für das Portal:

  1. Erstellen Sie eine Schlüsseldatei und eine Zertifikatsdatei im PEM-Format.
    Hinweis: Der Schlüssel oder das Zertifikat darf kein Passwort oder eine Passphrase enthalten.
  2. Kopieren Sie die PEM-Dateien in ein Verzeichnis auf dem Portalknoten, z. B. /opt/apigee/customer/application. Der Nutzer „apigee“ muss auf das Verzeichnis zugreifen können.
  3. Ändern Sie die Inhaberschaft der PEM-Dateien in „apigee“:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Bearbeiten Sie die Datei /opt/apigee/customer/application/portal.properties, um die folgenden Eigenschaften festzulegen. Falls diese Datei nicht vorhanden ist, erstellen Sie sie:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    TLS baas.portal.ssl.protocols9.1 TLS.

    # Mit diesem Attribut können Sie einen anderen Port angeben.
    # baas.portal.listen=9000


    Mit baas.portal.ssl.protocols können Sie die vom Portal unterstützten TLS-Protokolle festlegen. Eine Liste der unterstützten Protokolle finden Sie in der von Nginx definierten Liste der SSL-Protokollnamen: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Portalknoten konfigurieren:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Starten Sie das Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Führen Sie die unten unter „API BaaS-Stack-Knoten für TLS auf dem Stack oder im Portal konfigurieren“ beschriebene Vorgehensweise aus, um sicherzustellen, dass der Stack-Knoten die richtige TLS-URL für das Portal hat.

API-BaaS-Knoten für TLS im Stack oder Portal konfigurieren

Wenn Sie einen Load Balancer vor den Stack- oder Portalknoten einfügen oder TLS direkt auf dem Portal- oder Stackknoten aktivieren, müssen Sie die Knoten mit den richtigen URLs für den Zugriff auf den Stack und das Portal konfigurieren. Diese Informationen werden beispielsweise in folgenden Fällen von den Stack-Knoten benötigt:

  • Eine URL in Antworten in BaaS API-Anfragen einfügen
  • Fügen Sie in E-Mail-Vorlagen Links zum Zurücksetzen eines Passworts oder zum Senden anderer Benachrichtigungen hinzu.
  • Weiterleitung von Nutzern zu bestimmten Portalseiten

Wenn Sie einen Load Balancer vor den Stack-Knoten verwenden oder TLS auf dem Stack-Knoten konfigurieren, legen Sie die folgende Eigenschaft in /opt/apigee/customer/application/usergrid.properties fest:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

Ersetzen Sie http://localhost:8080 durch die URL des Load Balancers. Wenn der Load Balancer für die Verwendung von TLS konfiguriert ist, verwenden Sie das HTTPS-Protokoll. Sie müssen den Port nur angeben, wenn Sie einen nicht standardmäßigen Port verwenden, also einen anderen Port als Port 80 für HTTP und Port 443 für HTTPS.

Wenn Sie einen Load Balancer vor den Stack-Knoten verwenden, müssen Sie außerdem die folgende Eigenschaft in /opt/apigee/customer/application/portal.properties festlegen:

baas.portal.config.overrideUrl=http://localhost:8080

Ersetzen Sie http://localhost:8080 durch die URL des Load Balancers für den Stack.

Wenn Sie einen Load Balancer vor dem Portalknoten verwenden oder TLS auf dem Stack-Knoten konfigurieren, legen Sie die folgenden Eigenschaften in usergrid.properties fest:

usergrid-deployment_portal.url=http://localhost:9000

Ersetzen Sie http://localhost:9000 durch die URL des Load Balancers. Wenn der Load Balancer für die Verwendung von TLS konfiguriert ist, verwenden Sie das HTTPS-Protokoll. Sie müssen den Port nur angeben, wenn Sie einen nicht standardmäßigen Port verwenden, also einen anderen als Port 80 für HTTP und Port 443 für HTTPS.

Nach dem Bearbeiten von usergrid.properties:

  1. Konfigurieren Sie den Stack-Knoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Starten Sie den BaaS-Stack neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid erneutstart
  3. Wenn Sie portal.properties geändert haben, konfigurieren Sie den Portalknoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Starten Sie das BaaS-Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart