Konfigurowanie protokołu TLS dla routera i procesora wiadomości

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:

  1. Otwórz plik router.properties w edytorze. Jeśli plik nie istnieje, utwórz go:
    vi /opt/apigee/customer/application/router.properties
  2. 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
  3. Zapisz zmiany.
  4. Upewnij się, że plik właściwości należy do użytkownika apigee:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. Uruchom ponownie router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 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_protocols to TLSv1.2.

  7. 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:

  1. Otwórz plik message-processor.properties w edytorze. Jeśli plik nie istnieje, utwórz go:
    vi /opt/apigee/customer/application/message-processor.properties
  2. 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.

  3. Zapisz zmiany.
  4. Upewnij się, że plik właściwości należy do użytkownika apigee:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Uruchom ponownie procesor komunikatów:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. 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 (>= 2048 bitó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.1 z conf_jvmsecurity_jdk.tls.disabledAlgorithms w /opt/apigee/customer/application/message-processor.properties za 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_* z conf_jvmsecurity_jdk.tls.disabledAlgorithms w /opt/apigee/customer/application/message-processor.properties za 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:

  1. W każdym węźle serwera zarządzania otwórz plik /opt/apigee/customer/application/management-server.properties i 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.

  2. Zapisz plik.
  3. Upewnij się, że plik należy do użytkownika apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Uruchom ponownie serwer zarządzania:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Powtórz poprzednie kroki na wszystkich węzłach serwera zarządzania jeden po drugim.
  6. 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