Par défaut dans Apigee Edge pour le cloud privé 4.54.00, le routeur
(Nginx) et le processeur de messages (Java 21) activent TLSv1.2 et
TLSv1.3. En fonction de vos besoins commerciaux et de vos pratiques de sécurité
vous pouvez limiter les protocoles autorisés ou réactiver les anciens protocoles. Ce document explique comment configurer les protocoles TLS
pour le trafic entrant et sortant sur le routeur et le processeur de messages.
Pour le routeur, vous pouvez également définir le protocole pour des hôtes virtuels individuels. Pour en savoir plus, consultez Configurer l'accès TLS à une API pour le cloud privé.
Pour le processeur de messages, vous pouvez définir le protocole pour un TargetEndpoint individuel. Pour en savoir plus, consultez Configurer TLS de Edge au backend (cloud et cloud privé).
Définir le protocole TLS sur le routeur
Les propriétés suivantes vous aident à définir les protocoles TLS souhaités sur le routeur pour la communication entrante.
Pour définir le protocole TLS sur le routeur, définissez des propriétés dans le router.properties
fichier :
- Ouvrez le fichier
router.propertiesdans un éditeur. Si le fichier n'existe pas, créez-le :vi /opt/apigee/customer/application/router.properties
- Définissez les propriétés comme vous le souhaitez :
# 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
- Enregistrez les modifications.
- Assurez-vous que le fichier de propriétés appartient à l'utilisateur
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Redémarrez le routeur :
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Vérifiez que le protocole est correctement mis à jour en examinant le fichier Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Assurez-vous que la valeur de
ssl_protocolsestTLSv1.2. - Si vous utilisez TLS bidirectionnel avec un hôte virtuel, vous devez également définir le protocole TLS dans le hôte virtuel, comme décrit dans Configurer l'accès TLS à une API pour le cloud privé.
Définir le protocole TLS sur le processeur de messages
Les propriétés suivantes vous aident à définir les protocoles TLS souhaités sur le processeur de messages pour la communication sortante. Cette section explique également comment utiliser les protocoles et les chiffrements TLS désactivés.
Pour définir le protocole TLS sur le processeur de messages, définissez des propriétés dans le
message-processor.properties fichier :
- Ouvrez le fichier
message-processor.propertiesdans un éditeur. Si le fichier n'existe pas, créez-le :vi /opt/apigee/customer/application/message-processor.properties
- Configurez les propriétés à l'aide de la syntaxe suivante :
# 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[,...]
Exemple :
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
Pour obtenir la liste complète des propriétés associées, consultez Configurer TLS entre un routeur et un processeur de messages.
- Enregistrez les modifications.
- Assurez-vous que le fichier de propriétés appartient à l'utilisateur
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Redémarrez le processeur de messages :
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Si vous utilisez TLS bidirectionnel avec le backend, définissez le protocole TLS dans l'hôte virtuel, comme décrit dans Configurer TLS de Edge au backend (cloud et cloud privé).
Utiliser des chiffrements et des protocoles TLS plus anciens : consultez les sections suivantes si vous souhaitez utiliser des chiffrements ou des protocoles plus anciens.
Utiliser une version antérieure de TLS
Dans Java 21, les anciens protocoles TLS (TLSv1,
TLSv1.1, et SSLv3) et les clés Diffie-Hellman faibles
(DH keySize < 1024) sont désactivés par défaut dans
jdk.tls.disabledAlgorithms. Pour les activer, utilisez l'une des
options suivantes :
- Option A : Moderniser les protocoles de backend : mettez à jour les serveurs backend pour qu'ils soient compatibles avec TLS 1.2 ou TLS 1.3, et assurez-vous que la taille des paramètres Diffie-Hellman est de 2 048 bits ou plus (
>= 2048bits). - Option B : Réactiver les anciens protocoles à l'aide de CwC : maintenez
la compatibilité avec les anciens backends TLS 1.0 ou TLS 1.1 en supprimant
TLSv1, TLSv1.1deconf_jvmsecurity_jdk.tls.disabledAlgorithmsdans/opt/apigee/customer/application/message-processor.propertiesà l’aide de Code with Config (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
Utiliser des chiffrements RSA statiques
Apigee Edge pour le cloud privé version 4.54.00 s'exécute sur Java 21,
où les suites de chiffrement RSA statiques (TLS_RSA_*) qui ne disposent pas d'un échange de clés Diffie-Hellman éphémère (ECDHE ou DHE) sont désactivées par défaut dans
jdk.tls.disabledAlgorithms (par exemple,
TLS_RSA_WITH_AES_128_CBC_SHA ou
TLS_RSA_WITH_AES_256_CBC_SHA). Pour prendre en charge les backends qui nécessitent
des suites de chiffrement RSA statiques, utilisez l'option suivante :
- Réactiver les chiffrements RSA statiques à l'aide de CwC : maintenez
la compatibilité avec les anciens backends en supprimant
TLS_RSA_*deconf_jvmsecurity_jdk.tls.disabledAlgorithmsdans/opt/apigee/customer/application/message-processor.propertiesà l'aide de Code with Config (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
Après avoir modifié les propriétés, redémarrez le processeur de messages à l'aide de
apigee-service :
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Activer TLS 1.3 pour des hôtes
Cette section explique comment activer TLS 1.3 pour des hôtes virtuels spécifiques. Pour activer TLS 1.3, procédez comme suit sur les nœuds du serveur de gestion :
- Sur chaque nœud du serveur de gestion, modifiez le fichier
/opt/apigee/customer/application/management-server.propertieset ajoutez la ligne suivante (si le fichier n'existe pas, créez-le) :conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
Pour ce fichier, les protocoles sont séparés par une virgule et sont sensibles à la casse.
- Enregistrez le fichier.
- Assurez-vous que le fichier appartient à l'utilisateur
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Redémarrez le serveur de gestion :
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Répétez les étapes précédentes sur tous les nœuds du serveur de gestion, un par un.
- Créez (ou mettez à jour un hôte virtuel existant) avec la propriété suivante
propriété. Notez que les protocoles sont séparés par un espace et sont sensibles à la casse :
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }L'exemple suivant montre un exemple d'hôte virtuel avec cette propriété :
{ "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 }
Tester TLS 1.3
Pour tester TLS 1.3, saisissez la commande suivante :
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Notez que vous ne pouvez tester TLS 1.3 que sur les clients compatibles avec ce protocole. Si TLS 1.3 n'est pas activé, un message d'erreur semblable à celui-ci s'affiche :
sslv3 alert handshake failure