TLS für API BaaS konfigurieren

Edge for Private Cloud Version 4.16.09

TLS (Transport Layer Security, dessen Vorgänger SSL) ist die standardmäßige Sicherheitstechnologie, die für sicheres, verschlüsseltes Messaging in Ihrer API-Umgebung sorgt. 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. Bei dieser Konfiguration sendet das Portal HTTP-Anfragen an den Load Balancer, der die Anfragen dann an einen der Stack-Knoten weiterleitet. Dies ist die empfohlene Bereitstellungsumgebung für ein Produktionssystem.

TLS-Konfigurationsoptionen

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

  • Konfigurieren Sie TLS auf dem Portal und auf dem Load-Balancer für die Stackknoten

    Bei dieser Konfiguration verwenden Entwickler das HTTPS-Protokoll, um auf das Portal zuzugreifen. Das im Browser ausgeführte Portal verwendet HTTPS, um Anfragen an die Stackknoten über den Load-Balancer zu senden. 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.
  • TLS im Portal und auf einem einzelnen Stack-Knoten konfigurieren

    In einer kleinen Umgebung, z. B. in einer Test- oder Entwicklungsumgebung, haben Sie möglicherweise nur einen einzelnen Stack-Knoten. In diesem Fall ist kein Load Balancer erforderlich. 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 der oben nicht gezeigten Optionen besteht darin, einen Load-Balancer vor dem Portalknoten zu verwenden. In dieser Konfiguration können Sie TLS für den Load-Balancer und optional für die Verbindung zwischen dem Load-Balancer und dem Portal konfigurieren.

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

Mit den folgenden Schritten wird TLS für den Standard-Portalport 9000 und den Stackknoten 8080 konfiguriert. Sie können diesen Anschluss 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 darauf in folgendem Format zugreifen können:

https://stack_IP:8080

In diesem Beispiel konfigurieren Sie den TLS-Zugriff für Port 8080. Port 8080 ist jedoch nicht erforderlich. Sie können den Stack so konfigurieren, dass er einen anderen Port verwendet. 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 den HTTPS-Zugriff auf Port 8080 konfigurieren, können Sie daher 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 Keystores in ein Verzeichnis auf dem Stack-Knoten, z. B. /opt/apigee/customer/application. Der Nutzer „apigee“ muss auf das Verzeichnis zugreifen können.
  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 Eigenschaften festzulegen, einschließlich des Pfads zur JKS-Datei und des Passworts für den Schlüsselspeicher und den 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 im 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. Stellen Sie die Änderungen in Tomcat bereit:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  7. Starten Sie den BaaS-Stack neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid erneutstart
  8. Prüfen Sie, ob TLS funktioniert. Führen Sie dazu den folgenden cURL-Befehl auf dem Stackknoten über HTTPS aus:
    > curl -k https://localhost:8080/status -v

    Wenn TLS richtig konfiguriert ist, sollten Sie eine Antwort mit Statusinformationen sehen.

    Wenn Sie den TLS-Zugriff über einen anderen Port als 8080 konfiguriert haben, ändern Sie den Befehl oben so, dass der richtige Port verwendet wird.
  9. Wiederholen Sie diesen Schritt auf allen Stack-Knoten.
  10. 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 richtet, konfiguriere das Portal so, dass es über HTTPS auf den Stack zugreift, wie im folgenden Abschnitt beschrieben.
  11. 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 für diese Aufrufe über HTTPS konfigurieren.

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 über HTTP oder HTTPS auf den Load-Balancer zugreifen, je nachdem, wie Sie den Load-Balancer konfigurieren. Wenn der Load Balancer TLS verwendet, konfigurieren Sie das Portal wie unten beschrieben, damit es HTTPS-Anfragen an den Load Balancer sendet.
  • 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 wie oben beschrieben auf dem BaaS-Stack oder auf dem Load Balancer für die Stack-Knoten 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 über unverschlüsselte HTTP-Anfragen über Port 9000 auf den Portalserver zu. Sie können das Portal so konfigurieren, dass die an das und vom Portal gesendeten Daten 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 also den HTTPS-Zugriff auf Port 9000 konfigurieren, können Sie 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. Wenn 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
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Standardmäßig wird für den TLS-Zugriff Port 9000 verwendet.
    # Verwenden Sie dieses Attribut, um einen anderen Port anzugeben.
    # 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 Liste der von Nginx definierten 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. Konfiguration bereitstellen:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  7. Starten Sie das Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal neustart
  8. Verwenden Sie das Verfahren unten unter „API-BaaS-Stack-Knoten für TLS auf dem Stack oder Portal konfigurieren“, um dafür zu sorgen, dass der Stackknoten die richtige TLS-URL für das Portal hat.

API BaaS-Knoten für TLS im Stack oder im 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 folgenden Eigenschaften in /opt/apigee/customer/application/usergrid.properties fest:

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

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 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_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=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 Port 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. Stellen Sie die Änderungen in Tomcat bereit:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. Starten Sie den BaaS-Stack neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  4. Wenn Sie portal.properties geändert haben, konfigurieren Sie den Portalknoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portalconfigure
  5. Stellen Sie die Änderungen bereit:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. Starten Sie das BaaS-Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal neustart