Konfigurowanie protokołu TLS dla interfejsu BaaS API

Edge dla chmury prywatnej w wersji 4.18.01

TLS (Transport Layer Security, którego poprzednikiem jest SSL) to standardowa technologia zabezpieczeń, która zapewnia bezpieczne, szyfrowane przesyłanie wiadomości w środowisku interfejsu API. Możesz skonfigurować TLS w węzłach portalu API BaaS i stosu API BaaS.

Poniższy obraz przedstawia typowy diagram wdrażania interfejsu API BaaS z jednym węzłem portalu BaaS i 3 węzłami stosu interfejsu API BaaS.

Programiści używają przeglądarki do wysyłania żądań do portalu. Domyślnie żądania używają protokołu HTTP na porcie 9000 węzła portalu.

To wdrożenie obejmuje system równoważenia obciążenia między węzłami portalu i stosu. W tej konfiguracji Portal wysyła żądania HTTP do systemu równoważenia obciążenia, który następnie przekazuje je do jednego z węzłów Stack. Jest to zalecane środowisko wdrażania systemu produkcyjnego.

Opcje konfiguracji TLS

Podczas konfigurowania TLS dla API BaaS masz kilka opcji:

  • Skonfiguruj TLS w Portalu i w systemie równoważenia obciążenia dla węzłów Stack

    W tej konfiguracji deweloperzy używają protokołu HTTPS, aby uzyskać dostęp do Portalu, a Portal działający w przeglądarce używa protokołu HTTPS do wysyłania żądań do węzłów Stack przez system równoważenia obciążenia. System równoważenia obciążenia używa protokołu HTTP do uzyskiwania dostępu do węzłów Stack.
  • Konfigurowanie TLS na portalu, systemie równoważenia obciążenia i węzłach stosu

    Aby zwiększyć bezpieczeństwo, skonfiguruj system równoważenia obciążenia tak, aby używał TLS do uzyskiwania dostępu do węzłów stosu.
  • Konfigurowanie protokołu TLS w portalu i na jednym węźle stosu

    W małym środowisku, takim jak środowisko testowe lub środowisko programistyczne, możesz mieć tylko jeden węzeł stosu, co oznacza, że nie musisz uwzględniać systemu równoważenia obciążenia. W tej konfiguracji skonfiguruj TLS zarówno na węzłach portalu, jak i stosu.
  • Konfigurowanie TLS w systemie równoważenia obciążenia dla portalu

    Jedną z opcji, która nie została pokazana powyżej, jest użycie systemu równoważenia obciążenia przed węzłem portalu. W tej konfiguracji możesz skonfigurować TLS w systemie równoważenia obciążenia i opcjonalnie w połączeniu między systemem równoważenia obciążenia a portalem.

Sprawdź, czy port TLS jest otwarty

Procedury opisane poniżej konfigurują TLS na domyślnym porcie portalu 9000 i węźle Stack 8080. W razie potrzeby możesz jednak zmienić ten port.

Niezależnie od używanego portu musisz upewnić się, że jest on otwarty w węźle. Na przykład, aby otworzyć port 8443, możesz użyć tego polecenia:

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

Konfigurowanie TLS na stosie API BaaS

Domyślnie protokół TLS jest wyłączony w przypadku stosu API BaaS. Następnie uzyskujesz dostęp do interfejsu BaaS API przez HTTP, używając adresu IP lub nazwy DNS węzła Stack i portu 8080. Na przykład:

http://stack_IP:8080

Możesz też skonfigurować dostęp TLS do interfejsu BaaS API, aby uzyskać do niego dostęp w tej postaci:

https://stack_IP:8080

W tym przykładzie skonfigurujesz dostęp TLS do portu 8080. Port 8080 nie jest jednak wymagany – możesz skonfigurować Stack tak, aby używał innego portu. Jedynym wymaganiem jest, aby zapora sieciowa zezwalała na ruch przez określony port.

Stos może obsługiwać tylko 1 typ żądania (HTTP lub HTTPS) na jednym porcie. Dlatego jeśli skonfigurujesz dostęp HTTPS na porcie 8080, nie możesz używać protokołu HTTP do uzyskiwania dostępu do portu 8080. Jeśli skonfigurujesz Stack tak, aby używał portu 8443 z HTTPS, Stack nie będzie już nasłuchiwać na porcie 8080.

Aby skonfigurować dostęp TLS do stosu, wykonaj te czynności:

  1. Wygeneruj plik JKS magazynu kluczy zawierający certyfikat TLS i klucz prywatny. Więcej informacji znajdziesz w artykule o konfigurowaniu TLS/SSL dla Edge On-Premises.
    Uwaga: upewnij się, że hasło do magazynu kluczy i hasło do klucza są takie same.
  2. Skopiuj plik JKS magazynu kluczy do katalogu w węźle Stack, np. /opt/apigee/customer/application. Katalog musi być dostępny dla użytkownika „apigee”.
  3. Zmień właściciela pliku JKS na użytkownika „apigee”:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    gdzie keystore.jks to nazwa pliku magazynu kluczy.
  4. Edytuj plik /opt/apigee/customer/application/usergrid.properties, aby ustawić te właściwości, w tym ścieżkę do pliku JKS oraz hasło do magazynu kluczy i klucza. Jeśli ten plik nie istnieje, utwórz go:
    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
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Domyślnie dostęp TLS korzysta z portu 8080.
    # Use this property to specify a different port.
    # tomcat-server_port=8080


    Ostrzeżenie: wartość password musi być podana w postaci zwykłego tekstu. Dlatego należy chronić plik usergrid.properties przed nieautoryzowanym dostępem.

    Użyj właściwości tomcat-server_keyalias, aby określić alias magazynu kluczy. Alias klucza ustawiasz podczas jego tworzenia. Możesz go na przykład ustawić, używając opcji -alias w poleceniu keytool.

    Użyj tomcat-server_ssl.protocols, aby ustawić protokoły TLS obsługiwane przez Stack. Listę protokołów obsługiwanych przez Javę 8 znajdziesz na stronie http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Skonfiguruj węzeł Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Uruchom ponownie stos BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Sprawdź, czy protokół TLS działa, uruchamiając to polecenie cURL w węźle Stack przy użyciu protokołu HTTPS:
    > curl -k https://localhost:8080/status -v

    Jeśli protokół TLS jest skonfigurowany prawidłowo, powinna pojawić się odpowiedź zawierająca informacje o stanie.

    Jeśli dostęp TLS został skonfigurowany przez port inny niż 8080, zmodyfikuj powyższe polecenie, aby użyć prawidłowego portu.
  8. Powtórz te czynności na wszystkich węzłach Stack.
  9. Jeśli przed węzłami Stack masz system równoważenia obciążenia, skonfiguruj go tak, aby wysyłał żądania do węzłów Stack przez HTTPS. Więcej informacji znajdziesz w dokumentacji systemu równoważenia obciążenia.

    Jeśli Portal wysyła bezpośrednie żądania do Stack, skonfiguruj Portal tak, aby uzyskiwał dostęp do Stack przez HTTPS, zgodnie z opisem w następnej sekcji.
  10. Wykonaj procedurę opisaną poniżej w sekcji „Konfigurowanie węzłów stosu API BaaS pod kątem TLS na stosie lub w portalu”, aby upewnić się, że węzeł stosu ma prawidłowe adresy URL TLS podczas generowania odpowiedzi użytkownika.

Konfigurowanie portalu pod kątem dostępu do stosu przez TLS

Portal BaaS działający w przeglądarce działa przez wywoływanie interfejsu API do stosu BaaS. Jeśli skonfigurujesz stos BaaS tak, aby używał TLS, musisz też skonfigurować portal tak, aby wykonywał te wywołania przez HTTPS.

Instalacja API BaaS jest zwykle skonfigurowana w jeden z tych sposobów:

  • Używanie systemu równoważenia obciążenia między węzłami portalu i Stack

    Skonfiguruj system równoważenia obciążenia tak, aby wysyłał żądania do węzłów Stack przez HTTPS. Więcej informacji znajdziesz w dokumentacji systemu równoważenia obciążenia.

    W tej konfiguracji portal może uzyskać dostęp do systemu równoważenia obciążenia przez HTTP lub HTTPS, w zależności od tego, jak skonfigurujesz system równoważenia obciążenia. Jeśli system równoważenia obciążenia używa protokołu TLS, wykonaj poniższą procedurę, aby skonfigurować portal do wysyłania żądań do systemu równoważenia obciążenia HTTPS.
  • Skonfigurowanie portalu tak, aby wysyłał bezpośrednie żądania do stosu

    Skonfiguruj portal tak, aby uzyskiwał dostęp do stosu przez HTTPS, jak opisano poniżej.

Aby skonfigurować portal API BaaS do wykonywania wywołań interfejsu API przez HTTPS, wykonaj te czynności:

  1. Skonfiguruj dostęp TLS na stosie BaaS zgodnie z opisem powyżej lub w systemie równoważenia obciążenia dla węzłów stosu zgodnie z opisem w dokumentacji systemu równoważenia obciążenia.
  2. Zmodyfikuj plik /opt/apigee/customer/application/portal.properties, aby ustawić tę właściwość. Jeśli ten plik nie istnieje, utwórz go:
    baas.portal.config.overrideUrl=https://stackIP:port

    Jako wartość tej właściwości podaj adres IP lub nazwę DNS i port węzła API Stack w przypadku instalacji z jednym węzłem lub systemu równoważenia obciążenia, jeśli masz system równoważenia obciążenia przed węzłami API BaaS Stack.
  3. Skonfiguruj węzeł portalu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Uruchom ponownie portal za pomocą polecenia:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Jeśli podczas konfigurowania dostępu TLS do Stack użyto certyfikatu podpisanego samodzielnie, przeglądarka może nie zezwalać na żądania do Stack z Portalu. Jeśli w przeglądarce pojawi się błąd informujący, że dostęp HTTPS do stosu jest niedozwolony, wpisz w przeglądarce ten adres URL i dodaj wyjątek zabezpieczeń, aby zezwolić na dostęp:
    https://stackIP:port/status

    Podaj adres IP lub nazwę DNS i port węzła stosu interfejsu API lub systemu równoważenia obciążenia.

Konfigurowanie TLS w portalu API BaaS

Domyślnie użytkownicy uzyskują dostęp do portalu, wysyłając niezaszyfrowane żądania HTTP przez port 9000 na serwerze portalu. Możesz skonfigurować portal tak, aby używał protokołu HTTPS do szyfrowania danych wysyłanych do i z portalu.

Domyślnie dostęp do portalu uzyskujesz przez HTTP, używając adresu IP lub nazwy DNS węzła portalu i portu 9000. Na przykład:

http://portal_IP:9000

Możesz też skonfigurować dostęp TLS do portalu, aby uzyskać do niego dostęp w tej formie:

https://portal_IP:9443

W tym przykładzie skonfigurujesz dostęp TLS do korzystania z portu 9443. Port 9443 nie jest jednak wymagany – możesz skonfigurować portal tak, aby używał innego portu.

Portal może obsługiwać tylko jeden typ żądania (HTTP lub HTTPS) na jednym porcie. Dlatego jeśli skonfigurujesz dostęp HTTPS na porcie 9000, nie możesz używać protokołu HTTP do uzyskiwania dostępu do portu 9000. Jeśli skonfigurujesz portal tak, aby używał portu 9443 z HTTPS, portal nie będzie już nasłuchiwał na porcie 9000.

Aby skonfigurować TLS dla portalu:

  1. Utwórz plik klucza i plik certyfikatu w formacie PEM.
    Uwaga: upewnij się, że klucz lub certyfikat nie są zabezpieczone hasłem ani hasłem-kluczem.
  2. Skopiuj pliki PEM do katalogu w węźle portalu, np. /opt/apigee/customer/application. Katalog musi być dostępny dla użytkownika „apigee”.
  3. Zmień własność plików PEM na użytkownika „apigee”:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Zmodyfikuj plik /opt/apigee/customer/application/portal.properties, aby ustawić te właściwości. Jeśli ten plik nie istnieje, utwórz go:
    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
    # Domyślnie dostęp TLS używa portu 9000.
    # Use this property to specify a different port.
    # baas.portal.listen=9000


    Użyj baas.portal.ssl.protocols, aby ustawić protokoły TLS obsługiwane przez portal. Listę obsługiwanych protokołów znajdziesz na liście nazw protokołów SSL zdefiniowanych przez Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Skonfiguruj węzeł portalu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Uruchom ponownie portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Wykonaj procedurę opisaną poniżej w sekcji „Konfigurowanie węzłów stosu API BaaS pod kątem TLS na stosie lub w portalu”, aby upewnić się, że węzeł stosu ma prawidłowy adres URL TLS dla portalu.

Konfigurowanie węzłów API BaaS pod kątem TLS na stosie lub w portalu

Jeśli przed węzłami Stack lub Portal umieścisz system równoważenia obciążenia lub jeśli włączysz TLS bezpośrednio w węźle Portal lub Stack, musisz skonfigurować węzły z prawidłowymi adresami URL, aby uzyskać dostęp do Stack i Portal. Na przykład węzły stosu wymagają tych informacji, gdy:

  • uwzględnianie adresu URL w odpowiedziach na żądania do interfejsu API BaaS;
  • dodawanie linków w szablonach e-maili podczas resetowania hasła lub wysyłania innych powiadomień;
  • przekierowywanie użytkowników na określone strony Portalu;

Jeśli używasz systemu równoważenia obciążenia przed węzłami Stack lub konfigurujesz TLS w węźle Stack, ustaw tę właściwość w pliku /opt/apigee/customer/application/usergrid.properties:

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

Zastąp http://localhost:8080 adresem URL systemu równoważenia obciążenia. Jeśli system równoważenia obciążenia jest skonfigurowany do używania TLS, użyj protokołu HTTPS. Port musisz podać tylko wtedy, gdy używasz portu niestandardowego, czyli innego niż port 80 w przypadku HTTP i port 443 w przypadku HTTPS.

Jeśli przed węzłami stosu używasz systemu równoważenia obciążenia, musisz też ustawić tę właściwość w pliku /opt/apigee/customer/application/portal.properties :

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

Zastąp http://localhost:8080 adresem URL systemu równoważenia obciążenia dla stosu.

Jeśli używasz systemu równoważenia obciążenia przed węzłem portalu lub konfigurujesz TLS w węźle Stack, ustaw te właściwości w pliku usergrid.properties:

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

Zastąp http://localhost:9000 adresem URL systemu równoważenia obciążenia. Jeśli system równoważenia obciążenia jest skonfigurowany do używania TLS, użyj protokołu HTTPS. Port musisz podać tylko wtedy, gdy używasz portu niestandardowego, czyli innego niż port 80 w przypadku HTTP i port 443 w przypadku HTTPS.

Po zmodyfikowaniu pliku usergrid.properties:

  1. Skonfiguruj węzeł Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Uruchom ponownie stos BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Jeśli plik portal.properties został zmodyfikowany, skonfiguruj węzeł portalu:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Uruchom ponownie portal BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart