Konfigurowanie protokołu TLS dla interfejsu BaaS API

Edge for Private Cloud w wersji 4.18.01

TLS (Transport Layer Security, którego poprzednik to SSL) to standardowa technologia zabezpieczeń zapewniająca bezpieczne, zaszyfrowane przesyłanie wiadomości w środowisku interfejsów API. Protokół TLS możesz skonfigurować w węzłach stosu API BaaS Portal i API BaaS.

Poniższy przykład przedstawia typowy schemat wdrożenia API BaaS z jednym węzłem BaaS Portal i 3 węzłami stosu API BaaS.

Programiści mogą wysyłać żądania do portalu za pomocą przeglądarki. 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 węzłów stosu. W tej konfiguracji portal wysyła żądania HTTP do systemu równoważenia obciążenia, a system równoważenia obciążenia przekierowuje je do jednego z węzłów stosu. Jest to zalecane środowisko wdrożenia systemu produkcyjnego.

Opcje konfiguracji TLS

Podczas konfigurowania protokołu TLS dla API BaaS masz kilka opcji:

  • Skonfiguruj protokół TLS w portalu i w systemie równoważenia obciążenia dla węzłów stosu

    W tej konfiguracji deweloperzy uzyskują dostęp do portalu za pomocą protokołu HTTPS, a portal działający w przeglądarce korzysta z protokołu HTTPS do wysyłania żądań do węzłów stosu 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 stosu.
  • 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 protokół TLS w portalu i w pojedynczym węźle stosu

    W małym środowisku, takim jak środowisko testowe lub programistyczne, może być tylko 1 węzeł stosu, co oznacza, że nie trzeba uwzględniać systemu równoważenia obciążenia. W tej konfiguracji skonfiguruj TLS zarówno w węzłach portalu, jak i w węzłach stosu.
  • Skonfiguruj protokół TLS w systemie równoważenia obciążenia portalu.

    Jedną z opcji, które nie są przedstawione 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 na połączeniu między systemem równoważenia obciążenia a portalem.

Upewnij się, że port TLS jest otwarty

Poniższe procedury umożliwiają skonfigurowanie protokołu TLS na domyślnym porcie portalu 9000 i węźle stosu 8080. W razie potrzeby możesz go jednak zmienić.

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 protokołu TLS w stosie API BaaS

Domyślnie protokół TLS jest wyłączony w stosie API BaaS. Dostęp do interfejsu BaaS API możesz uzyskać przez HTTP, korzystając z adresu IP lub nazwy DNS węzła stosu i portu 8080. Na przykład:

http://stack_IP:8080

Możesz też skonfigurować dostęp TLS do interfejsu BaaS API w takiej formie:

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ć stos tak, aby używał innego portu. Jedynym wymaganiem jest to, aby zapora sieciowa zezwalała na ruch przez określony port.

Stos może obsługiwać tylko jeden typ żądania (HTTP lub HTTPS) przez 1 port. Dlatego, jeśli skonfigurujesz dostęp przez HTTPS na porcie 8080, nie możesz go uzyskać za pomocą protokołu HTTP. Jeśli skonfigurujesz stos do używania portu 8443 z protokołem HTTPS, nie będzie on już nasłuchiwać na porcie 8080.

Zastosuj się do poniższej procedury, aby skonfigurować dostęp za pomocą protokołu TLS do stosu:

  1. Wygeneruj plik JKS magazynu kluczy zawierający certyfikat TLS i klucz prywatny. Więcej informacji znajdziesz w artykule o konfigurowaniu TLS/SSL w środowisku Edge On.
    Uwaga: upewnij się, że hasło do magazynu i klucza jest takie samo.
  2. Skopiuj plik JKS magazynu kluczy do katalogu w węźle stosu, na przykład /opt/apigee/customer/application. Katalog musi być dostępny dla użytkownika „apigee”.
  3. Zmień własność 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ć poniższe właściwości, w tym ścieżkę do pliku JKS oraz hasło w magazynie kluczy i kluczu. 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




    /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ść password musi być podana w postaci zwykłego tekstu. Dlatego należy chronić plik usergrid.properties przed nieuprawnionym dostępem.

    Użyj właściwości tomcat-server_keyalias, aby określić alias magazynu kluczy. Alias klucza został ustawiony w chwili jego utworzenia. Możesz np. ustawić go, używając opcji -alias w poleceniu keytool.

    Użyj tomcat-server_ssl.protocols, by ustawić protokoły TLS obsługiwane przez Stos. Listę protokołów obsługiwanych przez Java 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 configure
  6. Ponownie uruchom stos BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Sprawdź, czy protokół TLS działa, uruchamiając w węźle stosu za pomocą protokołu HTTPS to polecenie cURL:
    > curl -k https://localhost:8080/status -v

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

    Jeśli dostęp TLS został skonfigurowany przez port inny niż 8080, zmodyfikuj powyższe polecenie, tak by używał odpowiedniego portu.
  8. Powtórz te czynności we wszystkich węzłach stosu.
  9. Jeśli masz system równoważenia obciążenia przed węzłami stosu, skonfiguruj go 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 kieruje bezpośrednie żądania do stosu, skonfiguruj go pod kątem dostępu do stosu przez HTTPS w sposób opisany w następnej sekcji.
  10. Wykonaj podaną niżej procedurę „Konfigurowanie węzłów stosu API BaaS pod kątem protokołu TLS na stosie lub portalu”, aby mieć pewność, że węzeł stosu ma prawidłowe adresy URL TLS podczas generowania odpowiedzi użytkowników.

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

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

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

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

    Skonfiguruj system równoważenia obciążenia 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.

    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 go skonfigurujesz. Jeśli system równoważenia obciążenia używa protokołu TLS, skorzystaj z poniższej procedury, aby skonfigurować portal tak, aby wysyłał żądania do systemu równoważenia obciążenia HTTPS.
  • Dopilnuj, aby portal bezpośrednio wysyłał żądania do stosu

    Skonfiguruj portal tak, aby uzyskać dostęp do stosu przez HTTPS w sposób opisany poniżej.

Wykonaj poniższe czynności, aby skonfigurować portal API BaaS pod kątem wykonywania wywołań interfejsu API przez HTTPS:

  1. Skonfiguruj dostęp TLS w stosie BaaS w sposób opisany powyżej lub w systemie równoważenia obciążenia dla węzłów stosu zgodnie z dokumentacją systemu równoważenia obciążenia.
  2. Edytuj plik /opt/apigee/customer/application/portal.properties, aby ustawić podaną niżej 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 stosu API dla instalacji pojedynczego węzła albo systemu równoważenia obciążenia, jeśli przed węzłami stosu API BaaS masz system równoważenia obciążenia.
  3. Skonfiguruj węzeł portalu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Uruchom ponownie portal przy użyciu polecenia:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Jeśli podczas konfigurowania dostępu TLS do powyższego stosu użyto certyfikatu podpisanego samodzielnie, przeglądarka może nie zezwalać na wysyłanie żądań ze stosu do stosu. Jeśli zobaczysz w przeglądarce błąd informujący o tym, że dostęp HTTPS do stosu jest niedozwolony, wyślij żądanie o następujący adres URL w przeglądarce i dodaj wyjątek zabezpieczeń, aby zezwolić na dostęp:
    https://stackIP:port/status

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

Konfigurowanie protokołu TLS w interfejsie API BaaS Portal

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 możesz uzyskać przez HTTP przy użyciu 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 TLS, aby uzyskać do niego dostęp w formularzu:

https://portal_IP:9443

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

Portal może obsługiwać tylko jeden typ żądań (HTTP lub HTTPS) przez jeden port. Dlatego też, jeśli skonfigurujesz dostęp przez HTTPS na porcie 9000, nie możesz go uzyskać za pomocą protokołu HTTP. Jeśli skonfigurujesz portal do używania portu 9443 z protokołem HTTPS, przestanie nasłuchiwać na porcie 9000.

Aby skonfigurować protokół TLS dla portalu:

  1. Utwórz plik klucza i plik certyfikatu w formacie PEM.
    Uwaga: sprawdź, czy na kluczu lub certyfikacie nie ma hasła ani hasła.
  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ć poniższe właściwości. Jeśli taki 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.pem1 TLS.


    # Użyj tej właściwości, aby określić inny port.
    # baas.portal.listen=9000


    Użyj pliku baas.portal.ssl.protocols, aby skonfigurować 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. Ponownie uruchom portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Wykonaj opisane poniżej czynności w sekcji „Konfigurowanie węzłów stosu API BaaS pod kątem protokołu TLS na stosie lub portalu”, aby mieć pewność, że węzeł stosu ma prawidłowy adres URL TLS dla portalu.

Skonfiguruj węzły API BaaS pod kątem protokołu TLS w stosie lub portalu

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

  • Umieszczenie adresu URL w odpowiedziach na żądania do interfejsu BaaS API.
  • dodawania linków w szablonach e-maili podczas resetowania hasła lub wysyłania innych powiadomień,
  • Przekierowywanie użytkowników do stron konkretnych portali.

Jeśli używasz systemu równoważenia obciążenia przed węzłami stosu lub konfigurujesz protokół TLS w 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. Musisz uwzględnić port tylko wtedy, gdy używasz niestandardowego portu, czyli innego niż port 80 w przypadku protokołu HTTP i port 443 w przypadku protokołu HTTPS.

Jeśli używasz systemu równoważenia 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 stosu.

Jeśli używasz systemu równoważenia obciążenia przed węzłem portalu lub konfigurujesz protokół TLS w węźle Stos, 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 protokołu TLS, użyj protokołu HTTPS. Musisz uwzględnić port tylko wtedy, gdy używasz niestandardowego portu, czyli innego niż port 80 w przypadku protokołu HTTP i port 443 w przypadku protokołu HTTPS.

Po wprowadzeniu zmian w pliku usergrid.properties:

  1. Skonfiguruj węzeł stosu:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Ponownie uruchom stos BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Jeśli zmodyfikowałeś(-aś) portal.properties, skonfiguruj węzeł portalu:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Ponownie uruchom BaaS Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart