Korzystanie z rozszerzenia SNI w przeglądarce Edge

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Rozszerzenie Server Name Indication (SNI) umożliwia obsługę wielu miejsc docelowych HTTPS z tego samego adresu IP i portu bez konieczności używania przez te miejsca docelowe tego samego certyfikatu TLS. Gdy rozszerzenie SNI jest włączone na kliencie, klient przekazuje nazwę hosta docelowego punktu końcowego w ramach początkowego uzgadniania połączenia TLS. Dzięki temu serwer TLS może określić, którego certyfikatu TLS należy użyć do zweryfikowania żądania.

Jeśli na przykład miejscem docelowym żądania jest https://example.com/request/path, klient TLS dodaje rozszerzenie server_name do żądania uzgadniania połączenia TLS jak pokazano poniżej:

Edge obsługuje rozszerzenie SNI w przypadku:

  • żądań z aplikacji klienckiej do proxy interfejsu API. W tym przypadku Edge działa jako serwer TLS .
  • żądań z Edge do backendu. W tym przypadku Edge działa jako klient TLS.

Więcej informacji o rozszerzeniu SNI znajdziesz na tych stronach:

Obsługa rozszerzenia SNI w przypadku żądania do proxy interfejsu API w Edge

Obsługa rozszerzenia SNI w przypadku żądań do proxy interfejsu API jest kontrolowana przez aliasy hostów i hosty wirtualne.

Informacje o hostach wirtualnych i aliasach hostów

W Edge host wirtualny określa adres IP i port lub nazwę DNS i port, na których jest udostępniane proxy interfejsu API, a tym samym adres URL, którego aplikacje używają do uzyskiwania dostępu do proxy interfejsu API. Adres IP lub nazwa DNS odpowiada routerowi Edge, a numer portu to otwarty port na routerze.

Podczas tworzenia hosta wirtualnego określasz też jego alias. Zwykle jest to nazwa DNS hosta wirtualnego. Aby określić proxy interfejsu API, które obsługuje żądanie, router porównuje nagłówek Host przychodzącego żądania z listą dostępnych aliasów hostów zdefiniowanych przez wszystkie hosty wirtualne.

Połączenie aliasu hosta i numeru portu hosta wirtualnego musi być unikalne dla wszystkich hostów wirtualnych w instalacji Edge. Oznacza to, że wiele hostów wirtualnych może używać tego samego numeru portu , jeśli mają różne aliasy hostów.

Host wirtualny określa też, czy dostęp do proxy interfejsu API jest uzyskiwany za pomocą protokołu HTTP, czy za pomocą zaszyfrowanego protokołu HTTPS z użyciem TLS. Podczas konfigurowania hosta wirtualnego do używania protokołu HTTPS, powiąż go z magazynem kluczy, który zawiera certyfikat i klucz prywatny używane przez hosta wirtualnego podczas uzgadniania połączenia TLS.

Więcej informacji o hostach wirtualnych znajdziesz na tych stronach:

Jak rozszerzenie SNI działa z aliasami hostów

Rozszerzenie SNI umożliwia zdefiniowanie wielu hostów wirtualnych na tym samym porcie, z których każdy ma inne certyfikaty i klucze TLS. Edge określa hosta wirtualnego oraz parę certyfikatu i klucza używaną przez TLS, na podstawie server_namerozszerzenia w żądaniu uzgadniania połączenia TLS.

Router Edge odczytuje rozszerzenie server_name w żądaniu uzgadniania połączenia TLS, a następnie używa go do wyszukiwania w aliasach hostów ze wszystkich hostów wirtualnych. Jeśli router wykryje dopasowanie do aliasu hosta, użyje certyfikatu i klucza TLS z hosta wirtualnego powiązanego z tym aliasem. Jeśli nie zostanie znalezione dopasowanie, uzgadnianie połączenia TLS nie powiedzie się.

Zamiast dopuścić do niepowodzenia uzgadniania połączenia TLS, możesz zdefiniować domyślną parę certyfikatu i klucza, jak opisano w następnych sekcjach.

Definiowanie domyślnej pary certyfikatu i klucza w Edge dla chmury

Apigee udostępnia certyfikat TLS i klucz prywatny do obsługi protokołu HTTPS. Wielu klientów woli używać własnego certyfikatu i klucza prywatnego podczas wdrażania, ale możesz wdrożyć interfejsy API za pomocą certyfikatu i klucza Apigee.

W Edge dla chmury, jeśli router nie może dopasować nagłówka SNI do aliasu hosta lub jeśli klient nie obsługuje rozszerzenia SNI, router używa domyślnego certyfikatu udostępnianego przez Apigee, czyli *.apigee.net.

Definiowanie domyślnej pary certyfikatu i klucza w Edge dla chmury prywatnej

W Edge dla chmury prywatnej, jeśli nie zostanie znalezione dopasowanie między rozszerzeniem server_name a aliasami hostów ze wszystkich hostów wirtualnych lub jeśli klient wysyłający żądanie nie obsługuje rozszerzenia SNI, możesz skonfigurować router tak, aby używał certyfikatu i klucza z domyślnego hosta wirtualnego na porcie. Domyślny host wirtualny jest określany przez połączenie nazwy organizacji, nazwy środowiska i nazwy hosta wirtualnego w postaci:

orgName_envName_vhName

Router używa certyfikatu i klucza z połączenia orgName_envName_vhName, które jest pierwsze w kolejności alfabetycznej. Na przykład żądanie przychodzi na port 443, a dla organizacji example w środowisku prod są zdefiniowane 2 hosty wirtualne:

  • nazwa hosta wirtualnego = default
  • nazwa hosta wirtualnego = test

W tym przykładzie router używa certyfikatu i klucza z hosta wirtualnego o nazwie default ponieważ example_prod_default jest alfabetycznie przed example_prod_test.

Aby włączyć domyślny host wirtualny:

  1. Na pierwszym węźle routera edytuj plik /opt/apigee/customer/application/router.properties. Jeśli ten plik nie istnieje, utwórz go.
  2. Dodaj do pliku tę właściwość, aby móc zdefiniować domyślny host wirtualny:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Uruchom ponownie router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. Powtórz te czynności na wszystkich pozostałych routerach.

Zamiast używać certyfikatu i klucza z domyślnego hosta wirtualnego, możesz jawnie zdefiniować domyślny certyfikat i klucz na routerze. Aby zdefiniować jawną domyślną parę certyfikatu i klucza:

  1. Na pierwszym węźle routera skopiuj certyfikat i klucz prywatny do lokalizacji na węźle routera do której ma dostęp użytkownik apigee. Na przykład /opt/apigee/customer/application.
  2. Zmień właściciela plików na użytkownika „apigee”:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. Edytuj plik /opt/apigee/customer/application/router.properties. Jeśli ten plik nie istnieje, utwórz go.
  4. Dodaj do pliku te właściwości, aby móc określić domyślny certyfikat i klucz:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. Ustaw te właściwości w pliku router.properties, aby określić lokalizację certyfikatu i klucza:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. Uruchom ponownie router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Powtórz te czynności na wszystkich pozostałych routerach.

Obsługa rozszerzenia SNI w przypadku żądań z Edge do backendu

Edge obsługuje używanie rozszerzenia SNI z procesorów wiadomości do miejsc docelowych w Apigee Edge dla chmury i wdrożeń w chmurze prywatnej. Domyślnie rozszerzenie SNI jest włączone w procesorach wiadomości Edge w chmurze i wyłączone w chmurze prywatnej.

Używanie rozszerzenia SNI do backendu w Edge dla chmury prywatnej

Aby zapewnić zgodność wsteczną z dotychczasowymi backendami docelowymi, Apigee domyślnie wyłączyło rozszerzenie SNI w Edge dla chmury prywatnej. Jeśli backend docelowy jest skonfigurowany do obsługi rozszerzenia SNI, możesz włączyć tę funkcję w sposób opisany poniżej w przypadku Twojej wersji Edge.

Nie jest wymagana żadna inna konfiguracja specyficzna dla Edge. Jeśli środowisko docelowe jest skonfigurowane pod kątem rozszerzenia SNI, Edge je obsługuje. Edge automatycznie wyodrębnia nazwę hosta z adresu URL żądania i dodaje ją do żądania uzgadniania połączenia TLS.

Włączanie rozszerzenia SNI między Edge a backendem w Edge w wersji 4.15.07.0x

Aby włączyć rozszerzenie SNI:

  1. Na pierwszym węźle procesora komunikatów otwórz w edytorze plik /opt/apigee4/conf/apigee/message-processor/system.properties.
  2. Ustaw w pliku system.properties tę właściwość na true:
    jsse.enableSNIExtension=true
  3. Uruchom ponownie procesory wiadomości:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Powtórz te czynności na wszystkich pozostałych procesorach wiadomości.

Włączanie rozszerzenia SNI między Edge a backendem w Edge w wersji 4.16.01 i nowszych

Aby włączyć rozszerzenie SNI:

  1. Na pierwszym węźle procesora komunikatów edytuj plik /opt/apigee/customer/application/message-processor.properties. Jeśli ten plik nie istnieje, utwórz go.
  2. Dodaj do pliku tę właściwość:
    conf_system_jsse.enableSNIExtension=true
  3. Uruchom ponownie procesor komunikatów:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Powtórz te czynności na wszystkich pozostałych procesorach wiadomości.