Configurer le protocole TLS depuis Edge vers le backend (Cloud et cloud privé)

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Un proxy d'API fonctionne comme un mappage d'un point de terminaison accessible au public sur votre service de backend. Un hôte virtuel définit la manière dont le proxy d'API public est exposé à une application. Par exemple, l'hôte virtuel détermine si le proxy d'API est accessible à l'aide de TLS. Lorsque vous configurez un proxy d'API, modifiez sa définition ProxyEndpoint pour configurer les hôtes virtuels qu'il utilise.

TargetEndpoint est l'équivalent sortant du ProxyEndpoint. Un TargetEndpoint fonctionne comme un client HTTP de Edge à un service de backend. Lors de la création d'un proxy d'API, vous pouvez le configurer pour utiliser zéro ou plusieurs points de terminaison cibles.

En savoir plus:

Configurer un point de terminaison cible ou un serveur cible

Pour configurer un TargetEndpoint, modifiez l'objet XML qui le définit. Vous pouvez modifier le TargetEndpoint en modifiant le fichier XML qui définit le TargetEndpoint dans votre proxy d'API, ou le modifier dans l'interface utilisateur de gestion Edge.

Pour modifier le TargetEndpoint à l'aide de l'interface utilisateur de gestion Edge:

  1. Connectez-vous à l'interface utilisateur de gestion Edge à l'adresse https://enterprise.apigee.com.
  2. Sélectionnez le nom du proxy d'API à mettre à jour.
  3. Sélectionnez l'onglet Dévelop (Développer).
  4. Sous Points de terminaison cibles, sélectionnez par défaut.
  5. Dans la zone de code, la définition TargetEndpoint s'affiche, comme ci-dessous :
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. Configurez un magasin de confiance comme décrit ci-dessous dans À propos de la configuration de TLS avec le backend.
  7. Apportez les modifications souhaitées et enregistrez le proxy. Si le proxy d'API a été déployé, l'enregistrement le redéploie avec le nouveau paramètre.

Notez que la définition TargetEndpoint contient une propriété name. Vous utilisez la valeur de la propriété name pour configurer la définition ProxyEndpoint d'un proxy d'API afin d'utiliser le TargetEndpoint. Pour en savoir plus, consultez la documentation de référence sur la configuration des proxys d'API.

TargetEndpoints peut être configuré pour référencer un TargetServer plutôt que l'URL cible explicite. Une configuration TargetServer dissocie les URL de point de terminaison concrètes des configurations TargetEndpoint. Les TargetServers permettent l'équilibrage de charge et le basculement sur plusieurs instances de serveur backend.

Vous trouverez ci-dessous un exemple de définition TargetServer:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

Un TargetServer est référencé par son nom dans l'élément <HTTPTargetConnection> d'une définition TargetEndpoint. Vous pouvez configurer un ou plusieurs TargetServers nommés, comme indiqué ci-dessous.

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

Pour en savoir plus, consultez la page Équilibrage de charge sur les serveurs backend.

À propos de la configuration TLS avec le backend

Avant de configurer l'accès TLS au backend, vous devez comprendre deux points importants:

  1. Par défaut, Edge ne valide pas le certificat du backend. Vous devez créer un Truststore pour configurer Edge afin de valider le certificat.
  2. Utilisez une référence pour spécifier le keystore ou le magasin de confiance utilisé par Edge.

Ces deux considérations sont décrites ci-dessous.

Définir un Truststore pour activer la validation des certificats

Lors d'une requête TLS via un point de terminaison cible ou un serveur cible, Edge ne valide pas par défaut le certificat TLS reçu du serveur backend. Cela signifie qu'Edge ne valide pas les éléments suivants:

  • Le certificat a été signé par une autorité de certification de confiance.
  • Le certificat n'a pas expiré.
  • Le certificat présente un nom commun. S'il existe un nom commun, Edge ne vérifie pas que ce nom correspond au nom d'hôte spécifié dans l'URL.

Pour configurer Edge afin de valider le certificat backend, vous devez:

  1. Créez un magasin de confiance sur Edge.
  2. Importez le certificat ou la chaîne de certificats du serveur dans le Truststore. Si le certificat de serveur est signé par un tiers, vous devez importer la chaîne de certificat complète, y compris le certificat de l'autorité de certification racine, dans le Truststore. Il n'y a pas d'autorités de certification implicitement approuvées.
  3. Ajoutez le Truststore à la définition TargetEndpoint ou TargetServer.

Pour en savoir plus, consultez la section Keystores et Truststores.

Exemple :

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Utiliser une référence à un keystore ou à un Truststore

L'exemple ci-dessous montre comment configurer un point de terminaison cible ou un serveur cible pour qu'il accepte le protocole TLS. Lors de la configuration du protocole TLS, vous spécifiez un magasin de confiance et un keystore dans le cadre d'une définition TargetEndpoint ou TargetServer.

Apigee vous recommande fortement d'utiliser une référence au keystore et au magasin de confiance dans la définition de TargetEndpoints ou TargetServer. L'avantage d'utiliser une référence est qu'il vous suffit de la mettre à jour pour qu'elle pointe vers un autre keystore ou un autre magasin de clés de confiance pour mettre à jour le certificat TLS.

Les références aux keystores et aux Truststores dans la définition TargetEndpoints ou TargetServer fonctionnent de la même manière que pour les hôtes virtuels.

Convertir un TargetEndpoint ou TargetServer pour utiliser une référence

Vous disposez peut-être de définitions TargetEndpoint ou TargetServer qui utilisent le nom littéral du keystore et du Truststore. Pour convertir la définition TargetEndpoint ou TargetServer afin d'utiliser des références:

  1. Mettez à jour la définition TargetEndpoint ou TargetServer pour utiliser une référence.
  2. Redémarrez les processeurs de messages Edge :
    • Pour les clients Public Cloud, contactez l'assistance Apigee Edge pour redémarrer les processeurs de messages.
    • Pour les clients de cloud privé, redémarrez les processeurs de messages Edge un par un.
  3. Vérifiez que votre TargetEndpoint ou TargetServer fonctionne correctement.

Configurer le protocole TLS à sens unique vers le serveur backend

Lorsque vous utilisez une définition TargetEndpoint, la configuration de l'accès TLS unidirectionnel de Edge (client TLS) au serveur backend (serveur TLS) ne nécessite aucune configuration supplémentaire sur Edge. Il appartient au serveur backend de configurer correctement le protocole TLS.

Il vous suffit de vous assurer que l'élément <URL> de la définition TargetEndpoint référence le service de backend via le protocole HTTPS et que vous activez TLS:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Si vous utilisez un serveur cible pour définir le service de backend, activez le protocole TLS dans la définition du serveur cible:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

Toutefois, si vous souhaitez que Edge valide le certificat backend, vous devez créer un magasin de confiance contenant le certificat backend ou la chaîne de certificats. Vous spécifiez ensuite le magasin de confiance dans la définition TargetEndpoint:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Ou dans la définition TargetServer:

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

Pour configurer le protocole TLS unidirectionnel:

  1. Si vous souhaitez valider le certificat backend, créez un Truststore sur Edge, puis importez le certificat backend ou la chaîne d'autorité de certification, comme décrit dans Keystores et Truststores. Pour cet exemple, si vous devez créer un Truststore, nommez-le myTrustStore.
  2. Si vous avez créé un Truststore,utilisez l'appel d'API POST suivant pour créer la référence nommée myTrustStoreRef pour le Truststore que vous avez créé ci-dessus:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. Utilisez l'interface utilisateur de gestion Edge pour mettre à jour la définition TargetEndpoint pour le proxy d'API (ou, si vous définissez le proxy d'API en XML, modifiez les fichiers XML pour le proxy) :
    1. Connectez-vous à l'interface utilisateur de gestion Edge à l'adresse https://enterprise.apigee.com.
    2. Dans le menu de l'interface utilisateur de gestion Edge, sélectionnez API.
    3. Sélectionnez le nom du proxy d'API à mettre à jour.
    4. Sélectionnez l'onglet Développement.
    5. Sous Points de terminaison cibles, sélectionnez par défaut.
    6. Dans la zone de code, modifiez l'élément <HTTPTargetConnection> pour ajouter l'élément <SSLInfo>. Assurez-vous de spécifier la bonne référence de magasin de confiance et de définir <Enabled> sur "true" :
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Enregistrez le proxy d'API. Si le proxy d'API a été déployé, l'enregistrement le redéploie avec le nouveau paramètre.

Configurer le protocole TLS bidirectionnel sur le serveur backend

Si vous souhaitez prendre en charge le protocole TLS bidirectionnel entre Edge (client TLS) et le serveur backend (serveur TLS):

  • Créez un keystore sur Edge et téléchargez le certificat Edge et la clé privée.
  • Si vous souhaitez valider le certificat backend, créez un Truststore sur Edge contenant le certificat et la chaîne d'autorité de certification que vous avez reçus du serveur backend.
  • Mettez à jour le TargetEndpoint de tous les proxys d'API qui référencent le serveur backend pour configurer l'accès TLS.

Utiliser l'alias de clé pour spécifier le certificat keystore

Vous pouvez définir plusieurs certificats, chacun avec son propre alias, dans le même keystore. Par défaut, Edge utilise le premier certificat défini dans le keystore.

Vous pouvez éventuellement configurer Edge pour utiliser le certificat spécifié par la propriété <KeyAlias>. Cela vous permet de définir un seul keystore pour plusieurs certificats, puis de sélectionner celui que vous souhaitez utiliser dans la définition TargetServer. Si Edge ne parvient pas à trouver un certificat avec un alias correspondant à <KeyAlias>, il utilise l'action par défaut consistant à sélectionner le premier certificat dans le keystore.

Les utilisateurs Edge for Public Cloud doivent contacter l'assistance Apigee Edge pour activer cette fonctionnalité.

Configuration du protocole TLS bidirectionnel

Pour configurer le protocole TLS bidirectionnel:

  1. Créez le keystore sur Edge, puis importez le certificat et la clé privée en suivant la procédure décrite ici: Keystores et Truststores. Pour cet exemple, créez un keystore nommé myTestKeystore qui utilise le nom d'alias myKey pour le certificat et la clé privée.
  2. Utilisez l'appel d'API POST suivant pour créer la référence nommée myKeyStoreRef au keystore que vous avez créé ci-dessus:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    La référence spécifie le nom du keystore et le type de référence en tant que KeyStore.

    Utilisez l'appel d'API GET suivant pour afficher la référence :

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Si vous souhaitez valider le certificat backend, créez un Truststore sur Edge, puis importez le certificat et la chaîne d'autorités de certification, comme décrit ici: Keystores et Truststores. Pour cet exemple, si vous devez créer un magasin de confiance, nommez-le myTrustStore.
  4. Si vous avez créé un Truststore,utilisez l'appel d'API POST suivant pour créer la référence nommée myTrustStoreRef pour le Truststore que vous avez créé ci-dessus:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. Utilisez l'interface utilisateur de gestion Edge pour mettre à jour la définition TargetEndpoint pour le proxy d'API (ou, si vous définissez le proxy d'API en XML, modifiez les fichiers XML pour le proxy) :
    1. Connectez-vous à l'interface utilisateur de gestion Edge à l'adresse https://enterprise.apigee.com.
    2. Dans le menu de l'interface utilisateur de gestion Edge, sélectionnez API.
    3. Sélectionnez le nom du proxy d'API à mettre à jour.
    4. Sélectionnez l'onglet Développement.
    5. Sous Points de terminaison cibles, sélectionnez par défaut.
    6. Dans la zone de code, modifiez l'élément <HTTPTargetConnection> pour ajouter l'élément <SSLInfo>. Veillez à spécifier le keystore et l'alias de clé appropriés, et à définir les éléments <Enabled> et <ClientAuthEnabled> sur "true" :
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. Enregistrez le proxy d'API. Si le proxy d'API a été déployé, l'enregistrement le redéploie avec le nouveau paramètre.

Pour en savoir plus sur les options disponibles dans le <TargetEndpoint>, y compris sur l'utilisation de variables pour fournir les valeurs <SSLInfo> du point de terminaison cible, consultez la documentation de référence sur la configuration du proxy d'API.

Activation de l'extension SNI...

Edge prend en charge l'utilisation de l'indication du nom du serveur (SNI) à partir des processeurs de messages pour cibler les points de terminaison dans Apigee Edge pour Cloud et pour les déploiements de cloud privé.

Pour Edge pour le cloud privé, pour assurer la rétrocompatibilité avec vos backends cibles existants, Apigee a désactivé l'extension SNI par défaut. Si votre backend cible est configuré pour accepter l'extension SNI, vous pouvez activer cette fonctionnalité. Pour plus d'informations, consultez la section Utiliser SNI avec Edge.