Konfigurowanie protokołu TLS dla interfejsu BaaS API

Edge for Private Cloud w wersji 4.16.09

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 portalu.

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 dla 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 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.
  • 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 Portala

    Jedna z opcji, która nie jest wymieniona powyżej, to użycie systemu równoważenia obciążenia przed węzłem Portala. 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 konfiguruje protokół TLS na domyślnym porcie portalu 9000 i węźle stosu 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. Aby otworzyć port 8443, możesz na przykład użyć tego polecenia:

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

Konfigurowanie protokołu 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 skonfigurujesz dostęp TLS tak, 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 JKS magazynu kluczy do katalogu w węźle Stos, takiego jak /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. Jeśli go nie ma, 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 używa portu 8080.
    # 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 jego tworzenia. 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ł zbioru:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Wdróż zmiany w Tomcat:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  7. Ponownie uruchom stos BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  8. Sprawdź, czy TLS działa, uruchamiając następujące polecenie cURL w węźle Stos z użyciem protokołu HTTPS:
    > curl -k https://localhost:8080/status -v

    Jeśli protokół TLS jest skonfigurowany prawidłowo, powinna pojawić się odpowiedź z informacjami o stanie.

    Jeśli dostęp TLS został skonfigurowany przez port inny niż 8080, zmień powyższe polecenie, tak aby używał prawidłowego portu.
  9. Powtórz to we wszystkich węzłach stosu.
  10. Jeśli masz system równoważenia obciążenia przed węzłami stosu, skonfiguruj system równoważenia obciążenia tak, aby wysyłał żądania do węzłów stosu przez 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.
  11. Wykonaj procedurę opisaną w sekcji „Konfigurowanie węzłów usługi BaaS API pod kątem korzystania z protokołu TLS na poziomie usługi lub portalu”, aby mieć pewność, że węzeł usługi ma prawidłowe adresy URL protokołu TLS podczas generowania odpowiedzi dla użytkownika.

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 interfejsu API jest zwykle skonfigurowana tak, aby:

  • 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. Aby dowiedzieć się więcej, zapoznaj się z dokumentacją 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ższe czynności, aby skonfigurować portal tak, aby wysyłał żądania do systemu równoważenia obciążenia 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, 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 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. Przeniesienie własności 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 setup
  6. Wdróż konfigurację:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  7. Ponownie uruchom portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  8. 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 umieścisz system równoważenia obciążenia przed węzłami stosu lub portalu albo jeśli włączysz TLS bezpośrednio w portalu lub węźle, musisz skonfigurować w węzłach prawidłowe adresy URL umożliwiające dostęp do stosu i portalu. Na przykład węzły zbioru wymagają tych informacji, gdy:

  • Umieszczanie adresu URL w odpowiedziach w żądaniach do interfejsu BaaS API.
  • Dodawanie linków w szablonach e-maili podczas resetowania hasła lub wysyłania innych powiadomień.
  • Przekierowywanie użytkowników na strony konkretnych portali.

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

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

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 równoważnika obciążenia przed węzłami stosu, 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 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_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

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ł stosu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid setup
  2. Wdróż zmiany w Tomcat:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. Ponownie uruchom BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  4. Jeśli zmodyfikowałeś plik portal.properties, skonfiguruj węzeł Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  5. Wdróż zmiany:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. Ponownie uruchom portal BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart