Per impostazione predefinita in Apigee Edge per Private Cloud 4.54.00, il router
(Nginx) e il Message Processor (Java 21) abilitano TLSv1.2 e
TLSv1.3. A seconda delle esigenze aziendali e delle pratiche di sicurezza
potresti voler limitare i protocolli consentiti o riattivare
i protocolli precedenti. Questo documento descrive come configurare i protocolli TLS
per il traffico in entrata e in uscita sul router e sul Message
Processor.
Per il router, puoi anche impostare il protocollo per i singoli host virtuali. Per saperne di più, consulta Configurare l'accesso TLS a un'API per il cloud privato.
Per il processore di messaggi, puoi impostare il protocollo per un singolo TargetEndpoint. Per saperne di più, consulta Configurare TLS da Edge al backend (cloud e cloud privato).
Impostare il protocollo TLS sul router
Le seguenti proprietà consentono di impostare i protocolli TLS desiderati sul router per la comunicazione in entrata.
Per impostare il protocollo TLS sul router, imposta le proprietà nel file router.properties:
- Apri il file
router.propertiesin un editor. Se il file non esiste, crealo:vi /opt/apigee/customer/application/router.properties
- Imposta le proprietà come preferisci:
# 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
- Salva le modifiche.
- Assicurati che il file delle proprietà sia di proprietà dell'utente
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Riavvia il router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Verifica che il protocollo sia stato aggiornato correttamente esaminando il file Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Assicurati che il valore di
ssl_protocolssiaTLSv1.2. - Se utilizzi TLS bidirezionale con un host virtuale, devi anche impostare il protocollo TLS nel host virtuale come descritto in Configurare l'accesso TLS a un' API per il cloud privato.
Impostare il protocollo TLS sul Message Processor
Le seguenti proprietà consentono di impostare i protocolli TLS desiderati sul Message Processor per la comunicazione in uscita. Questa sezione descrive anche come utilizzare i protocolli e i cifrari TLS disabilitati.
Per impostare il protocollo TLS sul processore di messaggi, imposta le proprietà nel
message-processor.properties file:
- Apri il file
message-processor.propertiesin un editor. Se il file non esiste, crealo:vi /opt/apigee/customer/application/message-processor.properties
- Configura le proprietà utilizzando la seguente sintassi:
# 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[,...]
Ad esempio:
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
Per un elenco completo delle proprietà correlate, consulta Configurare TLS tra un router e un Message Processor.
- Salva le modifiche.
- Assicurati che il file delle proprietà sia di proprietà dell'utente
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Riavvia il Message Processor:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Se utilizzi TLS bidirezionale con il backend, imposta il protocollo TLS nell'host virtuale come descritto in Configurare TLS da Edge al backend (cloud e cloud privato).
Utilizzare cifrari e protocolli TLS precedenti: consulta le seguenti sezioni se vuoi utilizzare cifrari o protocolli precedenti.
Utilizzare TLS precedente
In Java 21, i protocolli TLS precedenti (TLSv1,
TLSv1.1, e SSLv3) e le chiavi Diffie-Hellman deboli
(DH keySize < 1024) sono disabilitati per impostazione predefinita in
jdk.tls.disabledAlgorithms. Per abilitarle, utilizza una delle
seguenti opzioni:
- Opzione A: modernizzare i protocolli di backend: aggiorna i server di backend in modo che
supportino TLS 1.2 o TLS 1.3 e assicurati che le dimensioni dei parametri Diffie-Hellman siano
di 2048 bit o superiori (
>= 2048bit). - Opzione B: riattivare i protocolli precedenti utilizzando CwC: mantieni
la compatibilità con i backend TLS 1.0 o TLS 1.1 precedenti rimuovendo
TLSv1, TLSv1.1daconf_jvmsecurity_jdk.tls.disabledAlgorithmsin/opt/apigee/customer/application/message-processor.propertiesutilizzando il codice con la configurazione (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
Utilizzare i cifrari RSA statici
Apigee Edge per Private Cloud versione 4.54.00 viene eseguito su Java 21,
dove le suite di cifrari RSA statici (TLS_RSA_*) che non dispongono dello scambio di chiavi Diffie-Hellman effimero (ECDHE o DHE) sono disabilitate per impostazione predefinita in
jdk.tls.disabledAlgorithms (ad esempio,
TLS_RSA_WITH_AES_128_CBC_SHA o
TLS_RSA_WITH_AES_256_CBC_SHA). Per supportare i backend che richiedono
suite di cifrari RSA statici, utilizza la seguente opzione:
- Riattivare i cifrari RSA statici utilizzando CwC: mantieni
la compatibilità con i backend precedenti rimuovendo
TLS_RSA_*daconf_jvmsecurity_jdk.tls.disabledAlgorithmsin/opt/apigee/customer/application/message-processor.propertiesutilizzando il codice con la configurazione (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
Dopo aver modificato le proprietà, riavvia il processore di messaggi utilizzando
apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Abilitare TLS 1.3 per gli host
Questa sezione spiega come abilitare TLS 1.3 per host virtuali specifici. Per abilitare TLS 1.3, segui questi passaggi sui nodi del server di gestione:
- Su ogni nodo del server di gestione, modifica il file
/opt/apigee/customer/application/management-server.propertiese aggiungi la seguente riga (se il file non esiste, crealo):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
Per questo file, i protocolli sono separati da virgole e fanno distinzione tra maiuscole e minuscole.
- Salva il file.
- Assicurati che il file sia di proprietà dell'utente
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Riavvia il server di gestione:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Ripeti i passaggi precedenti su tutti i nodi del server di gestione uno alla volta.
- Crea (o aggiorna un host virtuale esistente) con la seguente
proprietà. Tieni presente che i protocolli sono separati da spazi e fanno distinzione tra maiuscole e minuscole:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }L'esempio seguente mostra un host virtuale di esempio con questa proprietà:
{ "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 }
Testare TLS 1.3
Per testare TLS 1.3, inserisci il seguente comando:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Tieni presente che puoi testare TLS 1.3 solo sui client che supportano questo protocollo. Se TLS 1.3 non è abilitato, viene visualizzato un messaggio di errore simile al seguente:
sslv3 alert handshake failure