Domyślnie w Apigee Edge dla chmury prywatnej w wersji 4.54.00 router
(Nginx) i procesor wiadomości (Java 21) włączają TLSv1.2 i
TLSv1.3. W zależności od potrzeb biznesowych i zasad bezpieczeństwa
możesz ograniczyć dozwolone protokoły lub ponownie włączyć
starsze protokoły. Z tego dokumentu dowiesz się, jak skonfigurować protokoły TLS
dla ruchu przychodzącego i wychodzącego na routerze i procesorze wiadomości.
W przypadku routera możesz też ustawić protokół dla poszczególnych hostów wirtualnych. Więcej informacji znajdziesz w artykule Konfigurowanie dostępu TLS do interfejsu API w chmurze prywatnej.
W przypadku procesora wiadomości możesz ustawić protokół dla poszczególnych elementów TargetEndpoint. Więcej informacji znajdziesz w artykule Konfigurowanie TLS od Edge do backendu (chmura i chmura prywatna).
Ustawianie protokołu TLS na routerze
Te właściwości pomagają ustawić żądane protokoły TLS na routerze w przypadku komunikacji przychodzącej.
Aby ustawić protokół TLS na routerze, ustaw właściwości w pliku router.properties:
- Otwórz plik
router.propertiesw edytorze. Jeśli plik nie istnieje, utwórz go:vi /opt/apigee/customer/application/router.properties
- Ustaw właściwości zgodnie z potrzebami:
# Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
- Zapisz zmiany.
- Upewnij się, że plik właściwości należy do użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Uruchom ponownie router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Sprawdź, czy protokół został prawidłowo zaktualizowany, sprawdzając plik Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Upewnij się, że wartość
ssl_protocolstoTLSv1.2. - Jeśli używasz dwukierunkowego protokołu TLS z hostem wirtualnym, musisz też ustawić protokół TLS w hoście wirtualnym zgodnie z opisem w artykule Konfigurowanie dostępu TLS do interfejsu API w chmurze prywatnej.
Ustawianie protokołu TLS na procesorze wiadomości
Te właściwości pomagają ustawić żądane protokoły TLS na procesorze komunikatów w przypadku komunikacji wychodzącej. Z tej sekcji dowiesz się też jak pracować z wyłączonymi protokołami i szyframi TLS.
Aby ustawić protokół TLS na procesorze wiadomości, ustaw właściwości w pliku
message-processor.properties:
- Otwórz plik
message-processor.propertiesw edytorze. Jeśli plik nie istnieje, utwórz go:vi /opt/apigee/customer/application/message-processor.properties
- Skonfiguruj właściwości, używając tej składni:
# Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 # SSLv3 is required conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.): conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]
Na przykład:
conf/system.properties+https.protocols=TLSv1.2 conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Pełną listę powiązanych właściwości znajdziesz w artykule Konfigurowanie TLS między routerem a procesorem wiadomości.
- Zapisz zmiany.
- Upewnij się, że plik właściwości należy do użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Uruchom ponownie procesor komunikatów:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Jeśli używasz dwukierunkowego protokołu TLS z backendem, ustaw protokół TLS w hoście wirtualnym zgodnie z opisem w artykule Konfigurowanie TLS od Edge do backendu (chmura i chmura prywatna).
Praca ze starszymi szyframi i protokołami TLS: jeśli chcesz pracować ze starszymi szyframi lub protokołami, zapoznaj się z tymi sekcjami.
Praca ze starszymi wersjami TLS
W Javie 21 starsze protokoły TLS (TLSv1,
TLSv1.1, i SSLv3) oraz słabe klucze protokołu Diffiego-Hellmana
(DH keySize < 1024) są domyślnie wyłączone w
jdk.tls.disabledAlgorithms. Aby je włączyć, użyj jednej z tych
opcji:
- Opcja A: modernizacja protokołów backendu: zaktualizuj serwery backendu, aby
obsługiwały protokoły TLS 1.2 lub TLS 1.3, i upewnij się, że rozmiary parametrów protokołu Diffiego-Hellmana wynoszą
co najmniej 2048 bitów (
>= 2048bitów). - Opcja B: ponowne włączenie starszych protokołów za pomocą CwC: Zachowaj
zgodność ze starszymi backendami TLS 1.0 lub TLS 1.1, usuwając
TLSv1, TLSv1.1zconf_jvmsecurity_jdk.tls.disabledAlgorithmsw/opt/apigee/customer/application/message-processor.propertiesza pomocą kodu z konfiguracją (CwC):# Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
Praca ze statycznymi szyframi RSA
Apigee Edge dla chmury prywatnej w wersji 4.54.00 działa w Javie 21,
w której statyczne zestawy szyfrów RSA (TLS_RSA_*) bez tymczasowej wymiany kluczy protokołu Diffiego-Hellmana (ECDHE lub DHE) są domyślnie wyłączone w
jdk.tls.disabledAlgorithms (np.
TLS_RSA_WITH_AES_128_CBC_SHA lub
TLS_RSA_WITH_AES_256_CBC_SHA). Aby obsługiwać backendy, które wymagają
statycznych zestawów szyfrów RSA, użyj tej opcji:
- Ponowne włączenie statycznych szyfrów RSA za pomocą CwC: Zachowaj
zgodność ze starszymi backendami, usuwając
TLS_RSA_*zconf_jvmsecurity_jdk.tls.disabledAlgorithmsw/opt/apigee/customer/application/message-processor.propertiesza pomocą kodu z konfiguracją (CwC):# Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
Po zmodyfikowaniu właściwości uruchom ponownie procesor wiadomości za pomocą
apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Włączanie TLS 1.3 w przypadku hostów
Z tej sekcji dowiesz się, jak włączyć TLS 1.3 w przypadku określonych hostów wirtualnych. Aby włączyć TLS 1.3, wykonaj te czynności na węzłach serwera zarządzania:
- W każdym węźle serwera zarządzania otwórz plik
/opt/apigee/customer/application/management-server.propertiesi dodaj ten wiersz (jeśli plik nie istnieje, utwórz go):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
W tym pliku protokoły są rozdzielone przecinkami i rozróżniana jest w nich wielkość liter.
- Zapisz plik.
- Upewnij się, że plik należy do użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Uruchom ponownie serwer zarządzania:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Powtórz poprzednie kroki na wszystkich węzłach serwera zarządzania jeden po drugim.
- Utwórz (lub zaktualizuj istniejący) host wirtualny z tą
właściwością. Pamiętaj, że protokoły są rozdzielone spacjami i rozróżniana jest w nich wielkość liter:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }Ten przykład pokazuje przykładowy host wirtualny z tą właściwością:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }
Testowanie TLS 1.3
Aby przetestować TLS 1.3, wpisz to polecenie:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Pamiętaj, że TLS 1.3 możesz testować tylko na klientach, którzy obsługują ten protokół. Jeśli TLS 1.3 nie jest włączony, zobaczysz komunikat o błędzie podobny do tego:
sslv3 alert handshake failure