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:
- Öffnen Sie die
router.propertiesDatei in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:vi /opt/apigee/customer/application/router.properties
- 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
- Speichern Sie die Änderungen.
- Achten Sie darauf, dass die Datei mit den Eigenschaften dem Nutzer
apigeegehört:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Starten Sie den Router neu:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 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_protocolsTLSv1.2ist. - 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:
- Öffnen Sie die
message-processor.propertiesDatei in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:vi /opt/apigee/customer/application/message-processor.properties
- 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.
- Speichern Sie die Änderungen.
- Achten Sie darauf, dass die Datei mit den Eigenschaften dem Nutzer
apigeegehört:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Starten Sie den Message Processor neu:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 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 (
>= 2048Bit). - 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.1ausconf_jvmsecurity_jdk.tls.disabledAlgorithmsin/opt/apigee/customer/application/message-processor.propertiesmit 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_*ausconf_jvmsecurity_jdk.tls.disabledAlgorithmsin/opt/apigee/customer/application/message-processor.propertiesmit 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:
- Bearbeiten Sie auf jedem Management Server-Knoten die Datei
/opt/apigee/customer/application/management-server.propertiesund 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.
- Speichern Sie die Datei.
- Achten Sie darauf, dass die Datei dem Nutzer
apigeegehört:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Starten Sie den Management Server neu:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Wiederholen Sie die vorherigen Schritte auf allen Management Server-Knoten.
- 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