TLS für API BaaS konfigurieren

Edge for Private Cloud Version 4.18.01

TLS (Transport Layer Security, Vorgänger: SSL) ist die Standardsicherheitstechnologie, um eine sichere, verschlüsselte Kommunikation in Ihrer gesamten API-Umgebung sicherzustellen. Sie können TLS auf API-BaaS-Portal- und API-BaaS-Stack-Knoten konfigurieren.

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

Entwickler verwenden einen Browser, um Anfragen an das Portal zu stellen. Für die Anfragen wird standardmäßig das HTTP-Protokoll an Port 9000 des Portalknotens verwendet.

Diese Bereitstellung umfasst einen Load-Balancer zwischen den Portal- und Stack-Knoten. In dieser Konfiguration stellt das Portal HTTP-Anfragen an den Load-Balancer. Der Load-Balancer leitet die Anfragen dann an einen der Stack-Knoten weiter. Dies ist die empfohlene Bereitstellungsumgebung für ein Produktionssystem.

TLS-Konfigurationsoptionen

Wenn Sie TLS für API BaaS konfigurieren, haben Sie mehrere Möglichkeiten:

  • Konfigurieren Sie TLS im Portal und auf dem Load-Balancer für die Stack-Knoten.

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

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

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

    Eine Option, die oben nicht gezeigt wird, besteht darin, einen Load-Balancer vor dem Portalknoten zu verwenden. In dieser Konfiguration können Sie TLS auf dem Load-Balancer und optional für die Verbindung zwischen dem Load-Balancer und dem Portal konfigurieren.

Achten Sie darauf, dass der TLS-Port offen ist

Mit den folgenden Schritten wird TLS am Standardport 9000 des Portals und am Stackknoten 8080 konfiguriert. Sie können diesen Port jedoch bei Bedarf ändern.

Unabhängig vom verwendeten Port müssen Sie sicherstellen, dass der Port auf dem Knoten offen ist. Mit dem folgenden Befehl können Sie beispielsweise Port 8443 öffnen:

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

TLS im API-BaaS-Stack konfigurieren

Standardmäßig ist TLS für den API-BaaS-Stack deaktiviert. Anschließend greifen Sie über HTTP über die IP-Adresse oder den DNS-Namen des Stack-Knotens und 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 in folgendem Format darauf 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 Traffic über den angegebenen Port zulässt.

Der Stack unterstützt nur einen Anfragetyp (HTTP oder HTTPS) über einen einzelnen Port. Wenn Sie also den HTTPS-Zugriff auf Port 8080 konfigurieren, können Sie nicht HTTP für den Zugriff auf Port 8080 verwenden. Wenn Sie den Stack für die Verwendung von Port 8443 mit HTTPS konfigurieren, überwacht der Stack Port 8080 nicht mehr.

Gehen Sie so vor, um den TLS-Zugriff auf den Stack zu konfigurieren:

  1. Generieren Sie die JKS-Datei für den Schlüsselspeicher, die Ihre TLS-Zertifizierung und Ihren privaten Schlüssel enthält. Weitere Informationen finden Sie unter TLS/SSL für lokale Edge-Geräte konfigurieren.
    Hinweis: Achten Sie darauf, dass das Passwort für den Schlüsselspeicher und für den Schlüssel identisch ist.
  2. Kopieren Sie die Schlüsselspeicher-JKS-Datei in ein Verzeichnis auf dem Stack-Knoten, z. B. /opt/apigee/customer/application . Das Verzeichnis muss für den Benutzer „apigee“ zugänglich sein.
  3. Ändern Sie die Eigentümerschaft der JKS-Datei in den Benutzer „apigee“:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    wobei keystore.jks der Name Ihrer 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 Kennworts für den Schlüsselspeicher und Schlüssel. Falls diese Datei nicht vorhanden ist, erstellen Sie sie:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks




    /opt/apigee/customer/application/keystore.jks
    # Verwenden Sie diese Property, um einen anderen Port anzugeben.
    # tomcat-server_port=8080


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

    Verwenden Sie das Attribut tomcat-server_keyalias, um den Schlüsselspeicheralias anzugeben. Der Schlüsselalias wird beim Erstellen des Schlüssels festgelegt. Beispielsweise mit der Option -alias im Befehl keytool.

    Verwenden Sie tomcat-server_ssl.protocols, um die vom Stack unterstützten TLS-Protokolle festzulegen. 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 Stackknoten:
    > /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 neu starten
  7. Prüfen Sie, ob TLS funktioniert. Führen Sie dazu den folgenden cURL-Befehl auf dem Stack-Knoten ü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 obigen Befehl, um den richtigen Port zu verwenden.
  8. Wiederholen Sie diesen Vorgang auf allen Stack-Knoten.
  9. Wenn sich vor den Stack-Knoten ein Load-Balancer befindet, konfigurieren Sie den Load-Balancer so, dass Anfragen über HTTPS an die Stack-Knoten gesendet werden. 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 über HTTPS auf den Stack zugreift, wie im folgenden Abschnitt beschrieben.
  10. Folgen Sie der Anleitung unter „API-BaaS-Stack-Knoten für TLS auf dem Stack oder Portal konfigurieren“, um dafür zu sorgen, dass der Stack-Knoten beim Generieren von Nutzerantworten die richtigen TLS-URLs hat.

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

Das in einem Browser ausgeführte BaaS-Portal 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 wird in der Regel so konfiguriert:

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

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

    Bei 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 mit der folgenden Anleitung so, dass Anfragen an den Load-Balancer von HTTPS gesendet werden.
  • Das Portal bitten, direkte Anfragen an den Stack zu senden

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

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 Stack-Knoten, wie in der Dokumentation für Ihren Load-Balancer beschrieben.
  2. Bearbeiten Sie /opt/apigee/customer/application/portal.properties zum Festlegen des folgenden Attributs. Wenn diese 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 einzelnen Knoten an. Wenn Sie einen Load-Balancer vor den API-BaaS-Stack-Knoten haben, geben Sie den DNS-Namen und Port des API-Stack-Knotens an.
  3. Konfigurieren Sie den Portalknoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurieren
  4. Starten Sie das Portal mit dem folgenden Befehl neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal neu starten
  5. Wenn Sie beim Konfigurieren des TLS-Zugriffs auf den Stack oben ein selbst signiertes Zertifikat verwendet haben, lässt Ihr Browser möglicherweise keine Anfragen an den Stack vom Portal zu. Wenn im Browser die Fehlermeldung angezeigt wird, dass der HTTPS-Zugriff auf den Stack nicht zulässig ist, fordern Sie die folgende URL in Ihrem Browser an 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 senden. Sie können das Portal so konfigurieren, dass die Daten, die an das und vom Portal gesendet werden, mit HTTPS verschlüsselt werden.

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

http://portal_IP:9000

Alternativ können Sie den TLS-Zugriff auf das Portal so konfigurieren, dass Sie folgendermaßen 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. Du kannst das Portal so konfigurieren, dass ein anderer Port verwendet wird.

Das Portal unterstützt nur einen Anfragetyp (HTTP oder HTTPS) über einen einzelnen Port. Wenn Sie also den HTTPS-Zugriff auf Port 9000 konfigurieren, können Sie nicht mit HTTP auf Port 9000 zugreifen. Wenn du das Portal für die Verwendung von Port 9443 mit HTTPS konfigurierst, überwacht das Portal nicht mehr Port 9000.

So konfigurieren Sie TLS für das Portal:

  1. Erstellen Sie eine Schlüsseldatei und ein Zertifikat im PEM-Format.
    Hinweis: Der Schlüssel bzw. das Zertifikat darf kein Passwort und keine Passphrase enthalten.
  2. Kopieren Sie die PEM-Dateien in ein Verzeichnis auf dem Portalknoten, z. B. /opt/apigee/customer/application. Das Verzeichnis muss für den Benutzer „apigee“ zugänglich sein.
  3. Ändern Sie die Eigentümerschaft der PEM-Dateien in den Benutzer „apigee“:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Bearbeiten Sie die Datei /opt/apigee/customer/application/portal.properties zum Festlegen der folgenden Attribute. 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.

    # Verwenden Sie diese Property, um einen anderen Port anzugeben.
    # baas.portal.listen=9000


    Verwenden Sie baas.portal.ssl.protocols, um die vom Portal unterstützten TLS-Protokolle festzulegen. 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. Konfigurieren Sie den Portalknoten:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurieren
  6. Starten Sie das Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal neu starten
  7. Folgen Sie der Anleitung unter „API-BaaS-Stack-Knoten für TLS auf dem Stack oder Portal konfigurieren“, um dafür zu sorgen, 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 vor den Stack- oder Portalknoten einen Load-Balancer einfügen oder TLS direkt auf dem Portal- oder Stack-Knoten aktivieren, müssen Sie die Knoten mit den richtigen URLs für den Zugriff auf den Stack und das Portal konfigurieren. Die Stack-Knoten benötigen diese Informationen beispielsweise in folgenden Fällen:

  • Aufnahme einer URL in Antworten auf BaaS API-Anfragen
  • Links in E-Mail-Vorlagen hinzufügen, wenn ein Passwort zurückgesetzt oder andere Benachrichtigungen gesendet werden
  • Sie können Nutzer auf bestimmte Portalseiten weiterleiten.

Wenn Sie einen Load-Balancer vor den Stackknoten verwenden oder TLS auf dem Stackknoten 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 etwas anderes als Port 80 für HTTP und Port 443 für HTTPS.

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

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

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

Wenn Sie vor dem Portalknoten einen Load-Balancer verwenden oder TLS auf dem Stack-Knoten konfigurieren, legen Sie in usergrid.properties die folgenden Attribute 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 etwas anderes als Port 80 für HTTP und Port 443 für HTTPS.

Nach der Bearbeitung von usergrid.properties:

  1. Konfigurieren Sie den Stackknoten:
    > /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 neu starten
  3. Wenn Sie portal.properties geändert haben, konfigurieren Sie den Portalknoten:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurieren
  4. Starten Sie das BaaS-Portal neu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal neu starten