De forma predeterminada en Apigee Edge para nube privada 4.54.00, el router
(Nginx) y el Message Processor (Java 21) habilitan TLSv1.2 y
TLSv1.3. Según las necesidades de tu empresa y las prácticas de seguridad
es posible que desees restringir los protocolos permitidos o volver a habilitar
los protocolos más antiguos. En este documento, se describe cómo configurar los protocolos TLS
para el tráfico de entrada y salida en el router y el procesador de mensajes.
En el caso del router, también puedes configurar el protocolo para hosts virtuales individuales. Consulta Configura el acceso TLS a una API para la Nube privada para obtener más información.
En el caso del procesador de mensajes, puedes configurar el protocolo para un TargetEndpoint individual. Consulta Configura TLS del perímetro al backend (nube y nube privada) para obtener más información.
Configura el protocolo TLS en el router
Las siguientes propiedades te ayudan a configurar los protocolos TLS deseados en el router para la comunicación de entrada.
Para configurar el protocolo TLS en el router, establece las propiedades en el router.properties
archivo:
- Abre el archivo
router.propertiesen un editor. Si el archivo no existe, créalo:vi /opt/apigee/customer/application/router.properties
- Establece las propiedades según lo desees:
# 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
- Guarda los cambios.
- Asegúrate de que el archivo de propiedades sea propiedad del usuario
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Reinicia el router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Para verificar que el protocolo se actualizó correctamente, examina el archivo Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Asegúrate de que el valor de
ssl_protocolsseaTLSv1.2. - Si usas TLS bidireccional con un host virtual, también debes configurar el protocolo TLS en el host virtual como se describe en Configura el acceso TLS a una API para la Nube privada.
Configura el protocolo TLS en el procesador de mensajes
Las siguientes propiedades te ayudan a configurar los protocolos TLS deseados en el Message Processor para la comunicación de salida. En esta sección, también se describe cómo trabajar con protocolos y cifrados TLS inhabilitados.
Para configurar el protocolo TLS en el Message Processor, establece las propiedades en el
message-processor.properties archivo:
- Abre el archivo
message-processor.propertiesen un editor. Si el archivo no existe, créalo:vi /opt/apigee/customer/application/message-processor.properties
- Configura las propiedades con la siguiente sintaxis:
# 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[,...]
Por ejemplo:
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
Para obtener una lista completa de las propiedades relacionadas, consulta Configura TLS entre un router y un Message Processor.
- Guarda los cambios.
- Asegúrate de que el archivo de propiedades sea propiedad del usuario
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Reinicia el procesador de mensajes:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Si usas TLS bidireccional con el backend, configura el protocolo TLS en el host virtual como se describe en Configura TLS del perímetro al backend (nube y nube privada).
Trabaja con cifrados y protocolos TLS más antiguos: Consulta las siguientes secciones si deseas trabajar con cifrados o protocolos más antiguos.
Trabaja con TLS más antiguo
En Java 21, los protocolos TLS heredados (TLSv1,
TLSv1.1 y SSLv3) y las claves Diffie-Hellman débiles
(DH keySize < 1024) están inhabilitados de forma predeterminada en
jdk.tls.disabledAlgorithms. Para habilitarlos, usa una de las
siguientes opciones:
- Opción A: Moderniza los protocolos de backend: Actualiza los servidores de backend para
admitir TLS 1.2 o TLS 1.3 y asegúrate de que los tamaños de los parámetros Diffie-Hellman sean
de 2048 bits o más (
>= 2048bits). - Opción B: Vuelve a habilitar los protocolos heredados con CwC: Para mantener
la compatibilidad con los backends heredados de TLS 1.0 o TLS 1.1, quita
TLSv1, TLSv1.1deconf_jvmsecurity_jdk.tls.disabledAlgorithmsen/opt/apigee/customer/application/message-processor.propertiescon código con configuración (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
Trabaja con cifrados RSA estáticos
Apigee Edge para la Nube privada versión 4.54.00 se ejecuta en Java 21,
donde los conjuntos de cifrado RSA estáticos (TLS_RSA_*) que carecen de intercambio de claves Diffie-Hellman efímero (ECDHE o DHE) están inhabilitados de forma predeterminada en
jdk.tls.disabledAlgorithms (por ejemplo,
TLS_RSA_WITH_AES_128_CBC_SHA o
TLS_RSA_WITH_AES_256_CBC_SHA). Para admitir backends que requieren
conjuntos de cifrado RSA estáticos, usa la siguiente opción:
- Vuelve a habilitar los cifrados RSA estáticos con CwC: Para mantener
la compatibilidad con los backends heredados, quita
TLS_RSA_*deconf_jvmsecurity_jdk.tls.disabledAlgorithmsen/opt/apigee/customer/application/message-processor.propertiescon código con configuración (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
Después de modificar las propiedades, reinicia el Message Processor con
apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Habilita TLS 1.3 para hosts
En esta sección, se explica cómo habilitar TLS 1.3 para hosts virtuales específicos. Para habilitar TLS 1.3, realiza los siguientes pasos en los nodos del servidor de administración:
- En cada nodo del servidor de administración, edita el archivo
/opt/apigee/customer/application/management-server.propertiesy agrega la siguiente línea (si el archivo no existe, créalo):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
En este archivo, los protocolos están separados por comas y distinguen mayúsculas de minúsculas.
- Guarda el archivo.
- Asegúrate de que el archivo sea propiedad del usuario
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Reinicia el servidor de administración:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Repite los pasos anteriores en todos los nodos del servidor de administración uno por uno.
- Crea (o actualiza uno existente) un host virtual con la siguiente
propiedad. Ten en cuenta que los protocolos están separados por espacios y distinguen mayúsculas de minúsculas:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }En el siguiente ejemplo, se muestra un vhost de muestra con esta propiedad:
{ "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 }
Prueba TLS 1.3
Para probar TLS 1.3, ingresa el siguiente comando:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Ten en cuenta que solo puedes probar TLS 1.3 en clientes que admitan este protocolo. Si TLS 1.3 no está habilitado, verás un mensaje de error similar al siguiente:
sslv3 alert handshake failure