Konfigurowanie protokołu TLS dla interfejsu BaaS API

Edge for Private Cloud w wersji 4.17.01

TLS (Transport Layer Security, którego poprzednikiem jest SSL) to standardowa technologia zabezpieczeń zapewniająca bezpieczne, zaszyfrowane wiadomości w środowisku interfejsu API. TLS możesz skonfigurować w portalu BaaS API i węzłach pakietu BaaS API.

Na tym obrazku widać typowy diagram wdrożenia BaaS API z jednym węzłem portalu BaaS i 3 węzłami stosu BaaS API.

Programiści wysyłają żądania do Portalu za pomocą przeglądarki. Domyślnie żądania korzystają z protokołu HTTP na porcie 9000 węzła Portal.

To wdrożenie obejmuje system równoważenia obciążenia między węzłami Portal i Stack. 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 stosu. Jest to zalecane środowisko wdrażania systemu produkcyjnego.

Opcje konfiguracji TLS

Podczas konfigurowania TLS dla usługi BaaS API masz do wyboru kilka opcji:

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

    W tej konfiguracji deweloperzy uzyskują dostęp do Portalu za pomocą protokołu HTTPS, a Portal działający w przeglądarce wysyła żądania do węzłów warstwy aplikacji za pomocą protokołu HTTPS przez system równoważenia obciążenia. System równoważenia obciążenia uzyskuje dostęp do węzłów stosu za pomocą protokołu HTTP.
  • Skonfiguruj TLS w Portalu, systemie równoważenia obciążenia i węzłach usługi Stack

    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 usługi Stack.
  • Skonfiguruj TLS na Portalu i na jednym węźle warstwy

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

    Jedną z opcji niewidocznych 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

Poniższe procedury konfigurują TLS na domyślnym porcie Portalu 9000 i na porcie węzła Stack 8080. W razie potrzeby możesz jednak zmienić ten port.

Niezależnie od używanego portu musisz się upewnić, że port w węźle jest otwarty. Możesz na przykład otworzyć port 8443 za pomocą tego polecenia:

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

Konfigurowanie TLS w stosie BaaS API

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

http://stack_IP:8080

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

https://stack_IP:8080

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

Zbiór może obsługiwać tylko jeden typ żądania (HTTP lub HTTPS) przez jeden port. Dlatego jeśli skonfigurujesz dostęp HTTPS na porcie 8080, nie będzie można uzyskać dostępu do portu 8080 przez HTTP. Jeśli skonfigurujesz grupę zasobów, aby używała portu 8443 z protokołem HTTPS, nie będzie ona już nasłuchiwać na porcie 8080.

Aby skonfigurować dostęp TLS do zbioru usług:

  1. Wygeneruj plik magazynu kluczy JKS zawierający certyfikat TLS i klucz prywatny. Więcej informacji znajdziesz w artykule Konfigurowanie TLS/SSL na potrzeby Edge On Premises.
    Uwaga: upewnij się, że hasło w magazynie kluczy i kluczu są takie same.
  2. Skopiuj plik klucza JKS do katalogu w węźle Stack, np. /opt/apigee/customer/application. Użytkownik „apigee” musi mieć dostęp do katalogu.
  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. Zmień plik /opt/apigee/customer/application/usergrid.properties, aby ustawić te właściwości, w tym ścieżkę do pliku JKS i hasło do magazynu kluczy oraz klucza.









    /opt/apigee/customer/application/keystore.jks
    # Użyj tej właściwości, aby określić inny port.
    # tomcat-server_port=8080


    Ostrzeżenie: wartość hasło musi być w postaci zwykłego tekstu. Dlatego zabezpiecz plik usergrid.properties przed nieautoryzowanym dostępem.

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

    Aby ustawić protokoły TLS obsługiwane przez pakiet, użyj parametru tomcat-server_ssl.protocols. 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ł stosu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid setup
  6. Ponownie uruchom BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Sprawdź, czy TLS działa, wykonując ten sam wiersz kodu curl na węźle stosu przy użyciu HTTPS:
    > curl -k https://localhost:8080/status -v

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

    Jeśli dostęp TLS został skonfigurowany na porcie innym niż 8080, zmodyfikuj podane powyżej polecenie, aby użyć prawidłowego portu.
  8. Powtórz tę czynność dla wszystkich węzłów grupy.
  9. Jeśli przed węzłami stosu korzystasz z systemu równoważenia obciążenia, skonfiguruj go tak, aby wysyłał żądania do węzłów stosu przez protokół HTTPS. Więcej informacji znajdziesz w dokumentacji systemu równoważenia obciążenia.

    Jeśli Portal wysyła bezpośrednie żądania do zbioru usług, skonfiguruj Portal tak, aby uzyskiwał dostęp do zbioru usług przez HTTPS zgodnie z opisem w następującej sekcji.
  10. Aby upewnić się, że węzeł stosu ma prawidłowe adresy URL TLS podczas generowania odpowiedzi użytkowników, skorzystaj z procedury opisanej poniżej w sekcji „Skonfiguruj węzły stosu API BaaS pod kątem protokołu TLS w stosie lub portalu”.

Konfigurowanie portalu w celu uzyskania dostępu do zbioru za pomocą protokołu TLS

Portal BaaS działający w przeglądarce działa przez wywołanie interfejsu API w stosie BaaS. Jeśli skonfigurujesz usługę BaaS tak, aby używała protokołu TLS, musisz też skonfigurować portal, aby wykonywał te wywołania przez HTTPS.

Instalacja BaaS w ramach interfejsu API jest zwykle skonfigurowana w ten sposób:

  • Użyj systemu równoważenia obciążenia między węzłami Portalu a węzłami stosu

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

    W tej konfiguracji portal może uzyskiwać dostęp do systemu równoważenia obciążenia przez HTTP lub HTTPS, w zależności od sposobu skonfigurowania systemu. 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 za pomocą protokołu HTTPS.
  • Wysyłanie przez Portal bezpośrednich żądań do zbioru usług

    Skonfiguruj Portal tak, aby miał dostęp do zbioru usług przez HTTPS, jak opisano poniżej.

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

  1. Skonfiguruj dostęp TLS w BaaS Stack zgodnie z opisem powyżej lub w systemie równoważenia obciążenia dla węzłów Stack zgodnie z opisem w dokumentacji systemu równoważenia obciążenia.
  2. Edytuj plik /opt/apigee/customer/application/portal.properties, aby ustawić następującą właściwość. Jeśli go nie ma, 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 usługi API Stack w przypadku instalacji na jednym węźle lub systemu równoważenia obciążenia, jeśli masz go przed węzłami usługi API BaaS Stack.
  3. Skonfiguruj węzeł portalu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Uruchom ponownie portal, używając polecenia:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Jeśli podczas konfigurowania dostępu TLS do zbioru usług użyto samodzielnie podpisanego certyfikatu, jak opisano powyżej, przeglądarka może nie zezwalać na żądania do zbioru usług z Portalu. Jeśli w przeglądarce pojawi się błąd informujący, że dostęp do usługi Stack przez protokół HTTPS jest niedozwolony, wprowadź w przeglądarce ten adres URL i dodaj wyjątek bezpieczeństwa, aby umożliwić dostęp:
    https://stackIP:port/status

    Podaj adres IP lub nazwę DNS oraz port węzła usługi API Stack lub równoważnika obciążenia.

Konfigurowanie TLS w portalu API BaaS

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

Domyślnie uzyskujesz dostęp do Portalu 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 do Portalu za pomocą protokołu TLS, aby uzyskać do niego dostęp w postaci:

https://portal_IP:9443

W tym przykładzie konfigurujesz dostęp TLS, aby używać 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) przez jeden port. Dlatego, jeśli skonfigurujesz dostęp HTTPS na porcie 9000, nie będzie można uzyskać dostępu do portu 9000 przez HTTP. Jeśli skonfigurujesz Portal tak, aby używał portu 9443 z protokołem HTTPS, nie będzie już nasłuchiwać na porcie 9000.

Aby skonfigurować protokół TLS w portalu:

  1. Utwórz plik klucza i plik certyfikatu w formacie PEM.
    Uwaga: upewnij się, że klucz lub certyfikat nie zawierają hasła lub frazy.
  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. Edytuj plik /opt/apigee/customer/application/portal.properties, aby ustawić te właściwości. Jeśli go nie ma, 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.
    # Użyj tej właściwości, aby określić inny port.
    # baas.portal.listen=9000


    Aby skonfigurować protokoły TLS obsługiwane przez Portal, użyj opcji baas.portal.ssl.protocols. 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. Aby mieć pewność, że węzeł usługi BaaS ma prawidłowy adres URL TLS dla portalu, wykonaj podaną niżej procedurę opisaną w sekcji „Konfigurowanie węzłów usługi BaaS API pod kątem protokołu TLS w usłudze i na portalu”.

Konfigurowanie węzłów API BaaS pod kątem TLS w usłudze Stack lub Portal

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

  • Dodawanie adresu URL w odpowiedziach na żądania interfejsu API BaaS.
  • Dodawanie linków w szablonach e-maili podczas resetowania hasła lub wysyłania innych powiadomień.
  • przekierowywanie użytkowników do określonych stron Portalu.

Jeśli używasz systemu równoważenia obciążenia przed węzłami stosu lub konfigurujesz TLS na węźle stosu, 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 protokołu TLS, użyj protokołu HTTPS. Portu musisz użyć tylko wtedy, gdy używasz portu niestandardowego, czyli innego niż port 80 dla HTTP i 443 dla HTTPS.

Jeśli używasz systemu równoważenia obciążenia przed węzłami stosu, musisz też ustawić tę właściwość w /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 tej grupy.

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

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 protokołu TLS, użyj protokołu HTTPS. Musisz uwzględnić port tylko wtedy, gdy używasz portu niestandardowego, czyli innego niż port 80 dla HTTP i 443 dla HTTPS.

Po edytowaniu pliku usergrid.properties:

  1. Skonfiguruj węzeł zbioru:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Ponownie uruchom BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Jeśli zmodyfikowałeś plik portal.properties, skonfiguruj węzeł Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Ponownie uruchom porat BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart