Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Host wirtualny w Edge określa domeny i porty, na których jest udostępniany serwer proxy interfejsu API, a co za tym idzie – adres URL, którego aplikacje używają do uzyskiwania dostępu do serwera proxy interfejsu API.
Host wirtualny określa też, czy dostęp do serwera proxy interfejsu API jest uzyskiwany za pomocą protokołu HTTP czy szyfrowanego protokołu HTTPS, który używa protokołu TLS. Konfigurując hosta wirtualnego do korzystania z protokołu HTTPS i TLS, tworzysz hosta wirtualnego w Edge i konfigurujesz go tak, aby używał magazynu kluczy i magazynu zaufanych certyfikatów.
Więcej informacji:
- Informacje o protokołach TLS/SSL
- Korzystanie z protokołu TLS w Edge
- Informacje o hostach wirtualnych
- Konfigurowanie hostów wirtualnych w Private Cloud
- Informacje o właściwościach hosta wirtualnego
- Magazyny kluczy i magazyny zaufania
Co jest potrzebne do utworzenia hosta wirtualnego
Zanim utworzysz hosta wirtualnego, musisz mieć te informacje:
- Publiczna nazwa domeny hosta wirtualnego. Musisz na przykład wiedzieć, czy
publiczna nazwa to
api.myCompany.com,myapi.myCompany.com, itp. Te informacje są używane podczas tworzenia hosta wirtualnego oraz podczas tworzenia rekordu DNS dla hosta wirtualnego. -
W przypadku protokołu TLS jednokierunkowego musisz utworzyć magazyn kluczy, który zawiera:
następujące elementy:
- certyfikat TLS – certyfikat podpisany przez urząd certyfikacji lub łańcuch certyfikatów, w którym ostatni certyfikat jest podpisany przez urząd certyfikacji;
- klucz prywatny – Edge obsługuje klucze o długości do 2048 bitów. Hasło jest opcjonalne.
- W przypadku protokołu TLS dwukierunkowego potrzebujesz magazynu kluczy i magazynu zaufania, w którym będzie przechowywany certyfikat klienta oraz opcjonalnie łańcuch urzędu certyfikacji. Magazyn zaufania jest potrzebny nawet wtedy, gdy certyfikat jest podpisany przez urząd certyfikacji.
Więcej informacji o tworzeniu magazynów kluczy i magazynów zaufania znajdziesz w artykule Magazyny kluczy i magazyny zaufania.
Konfiguracja hosta wirtualnego na potrzeby protokołu TLS
Aby utworzyć hosta wirtualnego, utwórz obiekt XML, który go definiuje.
Ten obiekt XML używa elementu <SSLInfo> do zdefiniowania hosta wirtualnego
na potrzeby konfiguracji protokołu TLS jednokierunkowego przez HTTPS:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>W tym przykładzie element <Enabled> ma wartość true, co oznacza, że protokół TLS jednokierunkowy jest włączony, a elementy <KeyStore> i <KeyAlias> określają magazyn kluczy i klucz używany przez połączenie TLS.
Aby włączyć protokół TLS dwukierunkowy, ustaw element <ClientAuthEnabled> na
true, i określ magazyn zaufanych certyfikatów
za pomocą elementu <TrustStore>. Magazyn zaufania zawiera certyfikat klienta oraz opcjonalnie łańcuch urzędu certyfikacji.
Określanie sposobu podawania nazwy magazynu kluczy i magazynu zaufania w hoście wirtualnym
W powyższym przykładzie hosta wirtualnego magazyn kluczy został określony za pomocą odwołania. Odwołanie to zmienna, która zawiera nazwę magazynu kluczy, a nie bezpośrednio nazwę magazynu kluczy.
Zaletą używania odwołania jest to, że możesz zmienić jego wartość, aby zmienić magazyn kluczy używany przez hosta wirtualnego. Zwykle jest to spowodowane tym, że certyfikat w bieżącym magazynie kluczy wkrótce wygaśnie. Zmiana wartości odwołania nie wymaga ponownego uruchomienia routera Edge.
Możesz też użyć w hoście wirtualnym nazwy magazynu kluczy w postaci literału. Jeśli jednak kiedykolwiek zmodyfikujesz hosta wirtualnego, aby zmienić nazwę magazynu kluczy, musisz ponownie uruchomić routery Edge.
Ograniczenia dotyczące używania odwołań do magazynów kluczy i magazynów zaufania
Podczas używania odwołań do magazynów kluczy i magazynów zaufania musisz wziąć pod uwagę to ograniczenie:
- Odwołań do magazynów kluczy i magazynów zaufanych certyfikatów możesz używać w hostach wirtualnych tylko wtedy, gdy obsługujesz SNI i kończysz protokół SSL na routerach Apigee.
- Jeśli przed routerami Apigee masz system równoważenia obciążenia i kończysz protokół TLS na systemie równoważenia obciążenia, nie możesz używać odwołań do magazynów kluczy i magazynów zaufania w hostach wirtualnych.
Modyfikowanie istniejącego hosta wirtualnego w celu używania odwołań do magazynu kluczy i magazynu zaufania
Apigee zdecydowanie zaleca, aby hosty wirtualne używały odwołań do magazynów kluczy i magazynów zaufania. Odwołania umożliwiają zmianę magazynu kluczy i magazynu zaufania używanego przez hosta wirtualnego bez konieczności ponownego uruchamiania routerów Edge.
Jeśli hosty wirtualne są obecnie skonfigurowane tak, aby używały nazwy magazynu kluczy lub magazynu zaufania w postaci literału, możesz je przekonwertować na używanie odwołań. Aby to zrobić, zaktualizuj hosta wirtualnego, aby używał odwołań, a następnie ponownie uruchom routery Edge.
Ustawianie szyfrów i protokołów TLS w Edge 4.15.07 i starszych wersjach
Jeśli używasz Edge w wersji 4.15.07 lub starszej, protokół TLS i szyfry
używane przez hosta wirtualnego ustawiasz za pomocą tagów podrzędnych <Ciphers> i <Protocols> tagu
<SSLInfo>. Te tagi
zostały opisane w tabeli poniżej.
Na przykład:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<Ciphers>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
<Protocols>
<Protocol>TLSv1.2</Protocol>
</Protocols>
</SSLInfo>
</SSLInfo>Tag <Cipher> używa
nazwy szyfru w języku Java i JSSE. Na przykład w przypadku Javy 8 zobacz
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Określanie szyfrów i protokołów TLS w Edge 4.16.01–4.16.09
W Edge 4.16.01–4.16.09 domyślne szyfry i protokoły dla hostów wirtualnych ustawiasz globalnie na routerze. Te ustawienia domyślne są stosowane do wszystkich hostów wirtualnych.
Do określania domyślnych protokołów i szyfrów używaj tokenów:
- Aby określić domyślne protokoły, użyj tokena
conf_load_balancing_load.balancing.driver.server.ssl.protocols. - Aby określić domyślne szyfry routera, użyj tokena
conf_load_balancing_load.balancing.driver.server.ssl.ciphers.
Domyślna wartość tokena conf_load_balancing_load.balancing.driver.server.ssl.protocols
to:
conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
To ustawienie określa, że router obsługuje protokół TLS w wersjach 1.0, 1.1 i 1.2. W tokenie podaj listę wartości rozdzielonych spacjami.
Domyślna wartość tokena conf_load_balancing_load.balancing.driver.server.ssl.ciphers
to:
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES
To ustawienie określa:
- wymagana długość klucza to co najmniej 128 bitów (
HIGH); - wykluczanie szyfrów bez uwierzytelniania (
!aNULL); - wykluczanie zestawów szyfrów używających MD5 (
!MD5); - wykluczanie zestawów szyfrów używających DH (w tym anonimowego DH, efemerycznego DH i stałego DH) ORAZ
potrójnego DES (
!DH+3DES) - wykluczanie zestawów szyfrów używających wymiany kluczy RSA ORAZ potrójnego DES (
!RSA+3DES).
Informacje o składni i wartościach dozwolonych przez ten token znajdziesz w artykule Szyfry OpenSSL. Pamiętaj, że ten token używa nazw szyfrów OpenSSL, takich jak AES128-SHA256, a nie nazw szyfrów Java/JSSE, takich jak TLS_RSA_WITH_AES_128_CBC_SHA256.
Aby ustawić token dla routera:
- Edytuj plik
/opt/apigee/customer/application/router.properties. Jeśli ten plik nie istnieje, utwórz go. - Ustaw token
conf_load_balancing_load.balancing.driver.server.ssl.ciphers. Aby na przykład określić tylko TLSv1.2 i wykluczyć zestawy szyfrów używające kluczy wstępnie udostępnionych, dodaj!PSK:conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2 conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
- Sprawdź, czy plik
router.propertiesjest własnością użytkownika apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Ponownie uruchom router Edge:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Sprawdź wartość tokena:
/opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Ustawianie parametrów hosta wirtualnego TLS w Edge w wersji 4.17.01 i nowszych
Jeśli używasz Edge w wersji 4.17.01 lub nowszej, możesz ustawić niektóre właściwości TLS dla poszczególnych hostów wirtualnych, takie jak protokół TLS i szyfr, za pomocą tagu podrzędnego <Properties> tagu <VirtualHost>. Te tagi zostały opisane w artykule Informacje o właściwościach hosta wirtualnego.
Na przykład:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">50</Property>
<Property name="keepalive_timeout">300</Property>
<Property name="proxy_request_buffering">off</Property>
<Property name="proxy_buffering">off</Property>
<Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
</Properties>
</VirtualHost>Informacje o składni i wartościach dozwolonych przez token ssl_ciphers znajdziesz w artykule Szyfry OpenSSL.
Pamiętaj, że ten token używa nazw szyfrów OpenSSL, takich jak AES128-SHA256, a nie
nazw szyfrów Java/JSSE, takich jak TLS_RSA_WITH_AES_128_CBC_SHA256.
Tworzenie hosta wirtualnego, który używa protokołu HTTPS
W tym przykładzie magazyn kluczy jest określany w hoście wirtualnym za pomocą odwołania. Użycie a odwołania umożliwia zmianę magazynu kluczy bez konieczności ponownego uruchamiania routerów.
Aby utworzyć hosta wirtualnego:
- Utwórz i skonfiguruj magazyn kluczy o nazwie myTestKeystore , wykonując czynności opisane w artykule Magazyny kluczy i magazyny zaufania. Upewnij się, że magazyn kluczy używa aliasu myKeyAlias dla certyfikatu i klucza prywatnego.
-
Aby utworzyć odwołanie o nazwie keystoreref do utworzonego powyżej magazynu kluczy, użyj tego wywołania interfejsu API POST:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:passwordOdwołanie określa nazwę magazynu kluczy i typ odwołania jako
KeyStore.Aby wyświetlić odwołanie, użyj tego wywołania interfejsu API GET:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password Utwórz hosta wirtualnego za pomocą interfejsu API Tworzenie hosta wirtualnego, gdzie
<ms-IP>to adres IP lub nazwa domeny węzła serwera zarządzania.Pamiętaj, aby określić prawidłowe odwołanie do magazynu kluczy i alias klucza:
curl -X POST -H "Content-Type:application/xml" \ http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \ -d '<VirtualHost name="newTLSTrustStore2"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>' \ -u email:password- Utwórz rekord DNS dla hosta wirtualnego, który pasuje do aliasu hosta.
Jeśli masz już jakieś serwery proxy interfejsu API, dodaj hosta wirtualnego do elementu
<HTTPConnection>w ProxyEndpoint. Host wirtualny jest automatycznie dodawany do wszystkich nowych serwerów proxy interfejsu API.Więcej informacji znajdziesz w sekcji Aktualizowanie serwera proxy interfejsu API po utworzeniu hosta wirtualnego w artykule Informacje o hostach wirtualnych.
Po zaktualizowaniu serwera proxy interfejsu API, aby używał hosta wirtualnego, i utworzeniu rekordu DNS dla aliasu hosta możesz uzyskać dostęp do serwera proxy interfejsu API w sposób opisany poniżej:
https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}Na przykład:
https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282
Tworzenie i modyfikowanie odwołań do magazynu kluczy lub magazynu zaufania
Możesz opcjonalnie skonfigurować hosta wirtualnego tak, aby używał odwołania do magazynu kluczy lub magazynu zaufania. Zaletą używania odwołania jest to, że możesz je zaktualizować, aby wskazywało inny magazyn kluczy lub magazyn zaufania, i zaktualizować certyfikat TLS bez konieczności ponownego uruchamiania routera.
Poniżej znajdziesz przykład hosta wirtualnego, który używa odwołania do magazynu kluczy:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>Aby utworzyć odwołanie o nazwie keystoreref, użyj tego wywołania interfejsu API POST:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password
Odwołanie określa nazwę magazynu kluczy i jego typ.
Aby wyświetlić odwołanie, użyj tego wywołania interfejsu API GET:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Aby później zmienić odwołanie tak, aby wskazywało inny magazyn kluczy, upewnij się, że alias ma taką samą nazwę, i użyj tego wywołania PUT:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password