Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Host wirtualny w Edge określa domeny i porty, na których jest udostępniany serwer proxy API, oraz Jest to adres URL używany przez aplikacje do uzyskiwania dostępu do serwera proxy interfejsu API.
Host wirtualny określa też, czy dostęp do serwera proxy interfejsu API jest możliwy za pomocą protokołu HTTP, za pomocą zaszyfrowanego protokołu HTTPS, który korzysta z TLS. Podczas konfigurowania hosta wirtualnego do korzystania z HTTPS TLS, utworzysz hosta wirtualnego w Edge i skonfigurujesz host wirtualny do korzystania z magazynu kluczy. i Truststore.
Więcej informacji:
- Informacje o TLS/SSL
- Używanie TLS z Edge
- Informacje o hostach wirtualnych
- Konfigurowanie hostów wirtualnych dla 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, przygotuj te informacje:
- Publicznie widoczna nazwa domeny hosta wirtualnego. Na przykład:
publicznie widoczna nazwa to
api.myCompany.com
,myapi.myCompany.com
itp. Te informacje jest używany podczas tworzenia hosta wirtualnego oraz podczas tworzenia rekordu DNS dla hosta wirtualnego. -
W przypadku jednokierunkowego połączenia TLS musisz utworzyć magazyn kluczy, w którym znajduje się
następujące:
- Certyfikat TLS – certyfikat podpisany przez urząd certyfikacji (CA) lub łańcuch certyfikatów, w których ostatni certyfikat jest podpisany przez urząd certyfikacji.
- Klucz prywatny – Edge obsługuje klucze o rozmiarze do 2048 bitów. Hasło jest opcjonalne.
- W przypadku dwukierunkowego protokołu TLS potrzebujesz magazynu kluczy i magazynu zaufania, który będzie przechowywać certyfikat klienta i opcjonalnie łańcuch urzędu certyfikacji. Potrzebujesz magazynu zaufania, nawet jeśli certyfikat jest podpisany przez urząd certyfikacji.
Zobacz Magazyny kluczy i magazyny zaufania, w których znajdziesz więcej informacji o tworzeniu magazynów kluczy i magazynów zaufania.
Konfiguracja hosta wirtualnego na potrzeby protokołu TLS
Aby utworzyć hosta wirtualnego, utwórz obiekt XML definiujący hosta wirtualnego.
Poniższy obiekt XML używa elementu <SSLInfo>
do zdefiniowania wirtualnego
dla jednokierunkowej konfiguracji TLS 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 to [prawda]
włącz jednokierunkowe szyfrowanie TLS, a elementy <KeyStore>
i <KeyAlias>
określają magazyn kluczy
i klucz używany przez połączenie TLS.
Aby włączyć dwukierunkowe protokół TLS, ustaw element <ClientAuthEnabled>
na
true
i określ magazyn zaufania
przy użyciu: <TrustStore>
. Magazyn zaufania zawiera certyfikat klienta i opcjonalnie urząd certyfikacji
łańcuch.
Decyzja o sposobie określenia nazwy magazynu kluczy i magazynu zaufania na hoście wirtualnym
W przykładzie hosta wirtualnego powyżej określono magazyn kluczy za pomocą odwołania. O odwołanie to zmienna, która zawiera nazwę magazynu kluczy, zamiast określać bezpośrednio nazwę magazynu kluczy.
Zaletą takiego odwołania jest możliwość zmiany jego wartości magazyn kluczy używany przez hosta wirtualnego, zwykle dlatego, że certyfikat w bieżącym magazynie kluczy wygaśnie w najbliższej przyszłości. Zmiana wartości odwołania nie wymaga ponownego uruchamiania routera brzegowego.
Możesz też użyć dosłownej nazwy magazynu kluczy na hoście wirtualnym. Jeśli jednak kiedykolwiek zmodyfikować hosta wirtualnego, aby zmienić nazwę magazynu kluczy, musisz ponownie uruchomić routery brzegowe.
Ograniczenia dotyczące używania odwołań do magazynów kluczy i magazynu zaufania
Podczas korzystania z odniesień do magazynów kluczy musisz wziąć pod uwagę poniższe ograniczenie magazyny zaufania:
- Odwołanie do magazynu kluczy i zaufania do magazynu zaufania możesz używać na hostach wirtualnych tylko wtedy, gdy obsługujesz SNI i zakończysz korzystanie z SSL na routerach Apigee.
- Jeśli przed routerami Apigee masz system równoważenia obciążenia i wyłączysz protokół TLS w systemie równoważenia obciążenia, nie możesz używać odwołań do magazynu kluczy i zaufania do magazynu kluczy hostów.
Modyfikowanie istniejącego hosta wirtualnego w taki sposób, aby używał 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 pozwalają zmienić magazyn kluczy i magazyn zaufania używany przez hosta wirtualnego bez konieczności konieczne jest ponowne uruchomienie routerów brzegowych.
Jeśli hosty wirtualne są obecnie skonfigurowane tak, aby używać dosłownej nazwy magazynu kluczy lub możesz je przekonwertować, aby używać w nich plików referencyjnych. Aby to zrobić, zaktualizuj hosta wirtualnego do użycia i ponownie uruchomić routery brzegowe.
Ustawianie mechanizmów szyfrowania i protokołów TLS w wersji Edge w wersji 4.15.07 i starszych
Jeśli używasz Edge w wersji 4.15.07 lub starszej, ustaw protokół TLS i mechanizmy szyfrowania
używany przez hosta wirtualnego przy użyciu tagów podrzędnych <Ciphers>
i <Protocols>
protokołu
Tag <SSLInfo>
. Te tagi
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 mechanizmu do Javy i JSSE. Na przykład dla języka Java 8 zobacz
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Określanie mechanizmów szyfrowania i protokołów TLS w przypadku Edge w wersjach od 4.16.01 do 4.16.09
W Edge w wersjach od 4.16.01 do 4.16.09 ustawiasz domyślne mechanizmy szyfrowania i protokoły hostów wirtualnych z całego routera. Te wartości domyślne zostaną następnie zastosowane do wszystkich hostów wirtualnych.
Użyj tokenów, aby określić domyślne protokoły i mechanizmy szyfrowania:
- Aby określić protokoły domyślne, użyj tokena
conf_load_balancing_load.balancing.driver.server.ssl.protocols
- Aby określić domyślne mechanizmy szyfrowania dla routera, użyj tokena
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Wartość domyślna 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. Podaj rozdzielana spacjami lista wartości do tokena.
Wartość domyślna 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:
- Wymagany jest klucz o długości co najmniej 128 bitów (
HIGH
). - Wyklucz mechanizmy szyfrowania bez uwierzytelniania (
!aNULL
) - Wyklucz zestawy szyfrów z użyciem MD5 (
!MD5
) - Wyklucz zestawy szyfrów z użyciem DH (w tym anonimowych systemów DH, tymczasowych i stałych) ORAZ
potrójny DES (
!DH+3DES
) - Wyklucz zestawy szyfrów za pomocą wymiany kluczy RSA I potrójnego algorytmu DES (
!RSA+3DES
)
Informacje o składni i wartościach dozwolonych przez ten token znajdziesz w artykule o szyfrach OpenSSL. Zwróć uwagę, że w tokenie są używane nazwy szyfrów OpenSSL, takie jak AES128-SHA256, a nie nazwy szyfrów Java/JSSE, na przykład TLS_RSA_WITH_AES_128_CBC_SHA256.
Aby ustawić token dla routera:
- Edytuj
/opt/apigee/customer/application/router.properties
. Jeśli plik nie istnieje, utwórz go. - Ustaw
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
token. Aby na przykład określić tylko TLSv1.2 i wykluczyć zestawy szyfrów za pomocą kluczy PSK, 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.properties
należy do Apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Ponownie uruchom router brzegowy:
/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
Ustawienie Parametry hosta wirtualnego TLS dla 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
pojedynczego hosta wirtualnego, takiego jak protokół TLS i mechanizm szyfrowania, przy użyciu tagu podrzędnego <Properties>
protokołu
<VirtualHost>
. Opis tych tagów znajdziesz w tym artykule.
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 o szyfrach OpenSSL.
Pamiętaj, że ten token korzysta z nazw szyfrów OpenSSL, takich jak AES128-SHA256, a nie
nazwy szyfrów Java/JSSE, na przykład TLS_RSA_WITH_AES_128_CBC_SHA256.
Tworzenie hosta wirtualnego korzystającego z HTTPS
Ten przykład określa magazyn kluczy dla hosta wirtualnego za pomocą odwołania. Za pomocą pozwala zmienić magazyn kluczy bez konieczności ponownego uruchamiania routerów.
Aby utworzyć hosta wirtualnego, wykonaj te czynności:
- Utwórz i skonfiguruj magazyn kluczy o nazwie myTestKeystore, korzystając z metody opisana tutaj procedura: magazyny kluczy magazyny zaufania, Sprawdź, czy magazyn kluczy używa nazwy aliasu myKeyAlias dla certyfikatu i klucza prywatnego.
-
Aby utworzyć odwołanie, użyj poniższego wywołania interfejsu POST API z nazwą keystoreref do utworzonego powyżej magazynu kluczy:
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 typ odwołania jako
KeyStore
.Aby wyświetlić odniesienie, użyj następującego wywołania interfejsu GET API:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Utwórz hosta wirtualnego przy użyciu polecenia Utwórz Interfejs API Virtual Host, gdzie
<ms-IP>
to adres IP lub nazwę domeny węzła serwera zarządzania.Pamiętaj, aby określić poprawne 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 polu ProxyEndpoint. Host wirtualny jest automatycznie dodawany do wszystkich nowych serwerów proxy interfejsu API.Przeczytaj sekcję Aktualizowanie serwera proxy interfejsu API po utworzeniu hosta wirtualnego w artykule Informacje o hostach wirtualnych
Po zaktualizowaniu serwera proxy interfejsu API w celu używania hosta wirtualnego i utworzeniu rekordu DNS dla hosta możesz uzyskać dostęp do serwera proxy interfejsu API w następujący sposób:
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 zaufania
Opcjonalnie możesz skonfigurować host wirtualny tak, aby używał odwołania do magazynu kluczy lub Truststore. Zaletą korzystania z pliku referencyjnego jest to, że możesz go zmienić na wskazać inny magazyn kluczy lub magazyn zaufania, aby zaktualizować certyfikat TLS bez konieczności ponownego uruchamiania Router.
Poniżej widać przykład hosta wirtualnego, który korzysta z 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ć odniesienie, użyj następującego wywołania interfejsu GET API:
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ł inny magazyn kluczy, upewnij się, że alias tej samej nazwy, użyj następującego 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