Définir le protocole TLS pour le routeur et le processeur de messages

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 :

  1. Ouvrez le fichier router.properties dans un éditeur. Si le fichier n'existe pas, créez-le :
    vi /opt/apigee/customer/application/router.properties
  2. 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
  3. Enregistrez les modifications.
  4. Assurez-vous que le fichier de propriétés appartient à l'utilisateur apigee :
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. Redémarrez le routeur :
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 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_protocols est TLSv1.2.

  7. 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 :

  1. Ouvrez le fichier message-processor.properties dans un éditeur. Si le fichier n'existe pas, créez-le :
    vi /opt/apigee/customer/application/message-processor.properties
  2. 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.

  3. Enregistrez les modifications.
  4. Assurez-vous que le fichier de propriétés appartient à l'utilisateur apigee :
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Redémarrez le processeur de messages :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. 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 (>= 2048 bits).
  • 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.1 de conf_jvmsecurity_jdk.tls.disabledAlgorithms dans /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_* de conf_jvmsecurity_jdk.tls.disabledAlgorithms dans /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 :

  1. Sur chaque nœud du serveur de gestion, modifiez le fichier /opt/apigee/customer/application/management-server.properties et 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.

  2. Enregistrez le fichier.
  3. Assurez-vous que le fichier appartient à l'utilisateur apigee :
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Redémarrez le serveur de gestion :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Répétez les étapes précédentes sur tous les nœuds du serveur de gestion, un par un.
  6. 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