TLS-Protokoll für Router und Nachrichtenprozessor festlegen

Standardmäßig sind in Apigee Edge for Private Cloud 4.54.00 auf dem Router (Nginx) und Message Processor (Java 21) TLSv1.2 und TLSv1.3 aktiviert. Je nach Ihren geschäftlichen Anforderungen und Sicherheit spraktiken möchten Sie möglicherweise die zulässigen Protokolle einschränken oder ältere Protokolle wieder aktivieren. In diesem Dokument wird beschrieben, wie Sie die TLS-Protokolle für den Upstream- und Downstream-Traffic auf dem Router und Message Processor konfigurieren.

Für den Router können Sie das Protokoll auch für einzelne virtuelle Hosts festlegen. Weitere Informationen finden Sie unter TLS-Zugriff auf eine API für die Private Cloud konfigurieren.

Für den Message Processor können Sie das Protokoll für einen einzelnen TargetEndpoint festlegen. Weitere Informationen finden Sie unter TLS von Edge mit dem Backend konfigurieren (Cloud und Private Cloud).

TLS-Protokoll auf dem Router festlegen

Mit den folgenden Eigenschaften können Sie die gewünschten TLS-Protokolle auf dem Router für die Upstream-Kommunikation festlegen.

Legen Sie die TLS-Protokolle auf dem Router fest, indem Sie die Eigenschaften in der router.properties Datei festlegen:

  1. Öffnen Sie die router.properties Datei in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:
    vi /opt/apigee/customer/application/router.properties
  2. Legen Sie die gewünschten Eigenschaften fest:
    # 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. Speichern Sie die Änderungen.
  4. Achten Sie darauf, dass die Datei mit den Eigenschaften dem Nutzer apigee gehört:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. Starten Sie den Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Prüfen Sie, ob das Protokoll korrekt aktualisiert wurde. Untersuchen Sie dazu die Nginx-Datei /opt/nginx/conf.d/0-default.conf:
    cat /opt/nginx/conf.d/0-default.conf

    Achten Sie darauf, dass der Wert für ssl_protocols TLSv1.2 ist.

  7. Wenn Sie Zwei-Wege-TLS mit einem virtuellen Host verwenden, müssen Sie das TLS-Protokoll auch im virtuellen Host festlegen. Informationen dazu finden Sie unter TLS-Zugriff auf eine API für die Private Cloud konfigurieren.

TLS-Protokoll auf dem Message Processor festlegen

Mit den folgenden Eigenschaften können Sie die gewünschten TLS-Protokolle auf dem Message Processor für die Downstream-Kommunikation festlegen. In diesem Abschnitt wird auch beschrieben, wie Sie mit deaktivierten TLS-Protokollen und Ciphers arbeiten.

Legen Sie die TLS-Protokolle auf dem Message Processor fest, indem Sie die Eigenschaften in der message-processor.properties Datei festlegen:

  1. Öffnen Sie die message-processor.properties Datei in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:
    vi /opt/apigee/customer/application/message-processor.properties
  2. Konfigurieren Sie die Eigenschaften mit der folgenden Syntax:
    # 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[,...]

    Beispiel:

    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

    Eine vollständige Liste der zugehörigen Eigenschaften finden Sie unter TLS zwischen einem Router und einem Message Processor konfigurieren.

  3. Speichern Sie die Änderungen.
  4. Achten Sie darauf, dass die Datei mit den Eigenschaften dem Nutzer apigee gehört:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Starten Sie den Message Processor neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Wenn Sie Zwei-Wege-TLS mit dem Backend verwenden, legen Sie das TLS-Protokoll im virtuellen Host fest. Informationen dazu finden Sie unter TLS von Edge mit dem Backend konfigurieren (Cloud und Private Cloud).

Mit älteren Ciphers und TLS-Protokollen arbeiten:In den folgenden Abschnitten finden Sie Informationen, wenn Sie mit älteren Ciphers oder Protokollen arbeiten möchten.

Mit älteren TLS-Versionen arbeiten

In Java 21 sind ältere TLS-Protokolle (TLSv1, TLSv1.1, und SSLv3) und schwache Diffie-Hellman-Schlüssel (DH keySize < 1024) standardmäßig in jdk.tls.disabledAlgorithms deaktiviert. Verwenden Sie eine der folgenden Optionen, um sie zu aktivieren:

  • Option A: Backend-Protokolle modernisieren: Aktualisieren Sie die Backend-Server, um TLS 1.2 oder TLS 1.3 zu unterstützen, und achten Sie darauf, dass die Größen der Diffie-Hellman-Parameter mindestens 2048 Bit betragen (>= 2048 Bit).
  • Option B: Ältere Protokolle mit CwC wieder aktivieren Behalten Sie die Kompatibilität mit älteren TLS 1.0- oder TLS 1.1-Backends bei, indem Sie TLSv1, TLSv1.1 aus conf_jvmsecurity_jdk.tls.disabledAlgorithms in /opt/apigee/customer/application/message-processor.properties mit Code mit Konfiguration (Code with Config, CwC) entfernen:
    # 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

Mit statischen RSA-Ciphers arbeiten

Apigee Edge for Private Cloud Version 4.54.00 wird unter Java 21 ausgeführt. Dort sind statische RSA-Cipher Suites (TLS_RSA_*), denen kein Ephemeral-Diffie-Hellman-Schlüsselaustausch (ECDHE oder DHE) fehlt, standardmäßig in jdk.tls.disabledAlgorithms deaktiviert (z. B. TLS_RSA_WITH_AES_128_CBC_SHA oder TLS_RSA_WITH_AES_256_CBC_SHA). Wenn Sie Backends unterstützen möchten, die statische RSA-Cipher Suites erfordern, verwenden Sie die folgende Option:

  • Statische RSA-Ciphers mit CwC wieder aktivieren: Behalten Sie die Kompatibilität mit älteren Backends bei, indem Sie TLS_RSA_* aus conf_jvmsecurity_jdk.tls.disabledAlgorithms in /opt/apigee/customer/application/message-processor.properties mit Code mit Konfiguration (Code with Config, CwC) entfernen:
    # 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

Starten Sie den Message Processor nach dem Ändern der Eigenschaften mit apigee-service neu:

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

TLS 1.3 für Hosts aktivieren

In diesem Abschnitt wird beschrieben, wie Sie TLS 1.3 für bestimmte virtuelle Hosts aktivieren. Führen Sie dazu die folgenden Schritte auf den Management Server Knoten aus:

  1. Bearbeiten Sie auf jedem Management Server-Knoten die Datei /opt/apigee/customer/application/management-server.properties und fügen Sie die folgende Zeile hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:
    conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3

    In dieser Datei sind die Protokolle kommagetrennt und es wird zwischen Groß- und Kleinschreibung unterschieden.

  2. Speichern Sie die Datei.
  3. Achten Sie darauf, dass die Datei dem Nutzer apigee gehört:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Starten Sie den Management Server neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Wiederholen Sie die vorherigen Schritte auf allen Management Server-Knoten.
  6. Erstellen Sie einen virtuellen Host (oder aktualisieren Sie einen vorhandenen) mit der folgenden Eigenschaft. Beachten Sie, dass die Protokolle durch Leerzeichen getrennt sind und zwischen Groß- und Kleinschreibung unterschieden wird:
    "properties": {
        "property": [
          {
            "name": "ssl_protocols",
            "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
          }
        ]
    }

    Das folgende Beispiel zeigt einen virtuellen Host mit dieser Eigenschaft:

    {
      "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
    }

TLS 1.3 testen

Geben Sie den folgenden Befehl ein, um TLS 1.3 zu testen:

curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"

Sie können TLS 1.3 nur auf Clients testen, die dieses Protokoll unterstützen. Wenn TLS 1.3 nicht aktiviert ist, wird eine Fehlermeldung wie die folgende angezeigt:

sslv3 alert handshake failure