Configurazione di TLS da Edge al backend (Cloud e cloud privato)

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Un proxy API funziona come una mappatura di un endpoint disponibile pubblicamente al tuo servizio di backend. Un host virtuale definisce la modalità di esposizione a un'app del proxy API rivolto al pubblico. Ad esempio, l'host virtuale determina se è possibile accedere al proxy API utilizzando TLS. Quando configuri un proxy API, modifica la relativa definizione di ProxyEndpoint per configurare gli host virtuali che utilizza.

TargetEndpoint è l'equivalente in uscita di ProxyEndpoint. Un TargetEndpoint funziona come un client HTTP da Edge a un servizio di backend. Quando crei un proxy API, puoi configurarlo in modo che utilizzi zero o più TargetEndpoint.

Scopri di più:

Configurazione di TargetEndpoint o TargetServer

Per configurare TargetEndpoint, modifica l'oggetto XML che lo definisce. Puoi modificare TargetEndpoint modificando il file XML che definisce TargetEndpoint nel proxy API oppure nell'interfaccia utente di gestione perimetrale.

Per utilizzare l'interfaccia utente di gestione perimetrale per modificare TargetEndpoint:

  1. Accedi all'interfaccia utente di gestione perimetrale all'indirizzo https://enterprise.apigee.com.
  2. Seleziona il nome del proxy API da aggiornare.
  3. Seleziona la scheda Sviluppo.
  4. In Endpoint di destinazione, seleziona predefinito.
  5. Nell'area di codice, viene visualizzata la definizione TargetEndpoint, simile a quella riportata di seguito:
    <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. Configura un archivio attendibilità come descritto di seguito in Informazioni sulla configurazione TLS con il backend.
  7. Apporta le modifiche e salva il proxy. Se è stato eseguito il deployment del proxy API, dopo il salvataggio viene eseguito nuovamente il deployment con la nuova impostazione.

Nota che la definizione TargetEndpoint contiene una proprietà name. Puoi utilizzare il valore della proprietà name per configurare la definizione di ProxyEndpoint di un proxy API in modo che utilizzi TargetEndpoint. Per saperne di più, consulta la sezione Riferimento per la configurazione del proxy API.

TargetEndpoints può essere configurato per fare riferimento a un TargetServer anziché all'URL di destinazione esplicito. Una configurazione TargetServer disaccoppia gli URL di endpoint concreti dalle configurazioni di TargetEndpoint. TargetServer viene utilizzato per supportare il bilanciamento del carico e il failover in più istanze di server di backend.

Di seguito è riportato un esempio di definizione di TargetServer:

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

Un TargetServer viene fatto riferimento in base al nome nell'elemento <HTTPTargetConnection> in una definizione di TargetEndpoint. Puoi configurare uno o più TargetServer denominati, come mostrato di seguito.

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

Per saperne di più, consulta Bilanciamento del carico tra i server di backend.

Informazioni sulla configurazione TLS con il backend

Prima di configurare l'accesso TLS al backend, è necessario comprendere due punti importanti:

  1. Per impostazione predefinita, Edge non convalida il certificato di backend. Devi creare un archivio attendibilità per configurare Edge per convalidare il certificato.
  2. Utilizza un riferimento per specificare l'archivio chiavi o l'archivio attendibilità utilizzato da Edge.

Entrambe le considerazioni sono descritte di seguito.

Definizione di un archivio attendibilità per abilitare la convalida dei certificati

Quando si effettua una richiesta TLS tramite TargetEndpoint o TargetServer, Edge non convalida il certificato TLS ricevuto dal server di backend per impostazione predefinita. Ciò significa che Edge non convalida che:

  • Il certificato è stato firmato da un'autorità di certificazione attendibile.
  • Il certificato non è scaduto.
  • Il certificato presenta un nome comune. Se esiste un nome comune, Edge non convalida che il nome comune corrisponda al nome host specificato nell'URL.

Per configurare Edge per la convalida del certificato di backend, devi:

  1. Crea un archivio attendibilità su Edge.
  2. Carica il certificato o la catena di certificati del server nell'archivio attendibilità. Se il certificato del server è firmato da una terza parte, dovrai caricare la catena di certificati completa, incluso il certificato CA radice, nell'archivio attendibilità. Non sono presenti CA implicitamente attendibili.
  3. Aggiungi l'archivio attendibilità alla definizione TargetEndpoint o TargetServer.

Per ulteriori informazioni, consulta Archivio chiavi e archivi attendibili.

Ad esempio:

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

Utilizzo di un riferimento a un archivio chiavi o a un archivio attendibilità

L'esempio seguente mostra come configurare TargetEndpoint o TargetServer per supportare TLS. Durante la configurazione di TLS, specifichi un archivio di attendibilità e un archivio chiavi come parte di una definizione di TargetEndpoint o TargetServer.

Apigee consiglia vivamente di utilizzare un riferimento all'archivio chiavi e all'archivio attendibilità nella definizione di TargetEndpoints o TargetServer. Il vantaggio dell'utilizzo di un riferimento è che è sufficiente aggiornare il riferimento in modo che rimandi a un archivio chiavi o un archivio di attendibilità diverso per aggiornare il certificato TLS.

I riferimenti agli archivi chiavi e ai truststore nella definizione di TargetEndpoints o TargetServer funzionano allo stesso modo degli host virtuali.

Conversione di un TargetEndpoint o TargetServer per l'utilizzo di un riferimento

Potresti avere definizioni di TargetEndpoint o TargetServer esistenti che utilizzano il nome letterale dell'archivio chiavi e dell'archivio attendibilità. Per convertire la definizione di TargetEndpoint o TargetServer per utilizzare i riferimenti:

  1. Aggiorna la definizione di TargetEndpoint o TargetServer per utilizzare un riferimento.
  2. Riavvia i processori di messaggi Edge:
    • Per i clienti del cloud pubblico, contatta l'assistenza Apigee Edge per riavviare i processori di messaggi.
    • Per i clienti del cloud privato, riavvia i processori di messaggi periferici uno alla volta.
  3. Verifica che TargetEndpoint o TargetServer funzioni correttamente.

Configurazione di TLS unidirezionale per il server di backend

Quando utilizzi una definizione TargetEndpoint, la configurazione dell'accesso TLS unidirezionale da Edge (client TLS) al server di backend (server TLS) non richiede alcuna configurazione aggiuntiva su Edge. La configurazione corretta di TLS spetta al server di backend.

Devi solo assicurarti che l'elemento <URL> nella definizione di TargetEndpoint faccia riferimento al servizio di backend tramite il protocollo HTTPS e di abilitare TLS:

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

Se utilizzi un TargetServer per definire il servizio di backend, abilita TLS nella definizione di TargetServer:

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

Tuttavia, se vuoi che Edge convalidi il certificato di backend, devi creare un archivio di attendibilità che contenga il certificato o la catena di certificati di backend. Quindi specifichi l'archivio attendibilità nella definizione di TargetEndpoint:

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

Oppure, nella definizione di 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>

Per configurare TLS unidirezionale:

  1. Se vuoi convalidare il certificato di backend, crea un archivio di attendibilità su Edge e carica il certificato di backend o la catena di CA, come descritto in archivi chiavi e archivi attendibilità. Per questo esempio, se devi creare un truststore, assegnagli il nome myTrustStore.
  2. Se hai creato un archivio attendibilità,utilizza la seguente chiamata API POST per creare il riferimento denominato myTrustStoreRef all'archivio attendibilità creato in precedenza:

    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. Utilizza l'interfaccia utente di gestione perimetrale per aggiornare la definizione TargetEndpoint per il proxy API (oppure, se definisci il proxy API in XML, modifica i file XML per il proxy):
    1. Accedi all'interfaccia utente di gestione perimetrale all'indirizzo https://enterprise.apigee.com.
    2. Nel menu dell'interfaccia utente di Gestione perimetrale, seleziona API.
    3. Seleziona il nome del proxy API da aggiornare.
    4. Seleziona la scheda Sviluppo.
    5. In Endpoint di destinazione, seleziona predefinito.
    6. Nell'area del codice, modifica l'elemento <HTTPTargetConnection> per aggiungere l'elemento <SSLInfo>. Assicurati di specificare il riferimento dell'archivio attendibilità corretto e di impostare <Enabled> su true:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Salva il proxy API. Se è stato eseguito il deployment del proxy API, dopo il salvataggio viene eseguito nuovamente il deployment con la nuova impostazione.

Configurazione di TLS bidirezionale per il server di backend

Se vuoi supportare TLS bidirezionale tra Edge (client TLS) e il server di backend (server TLS):

  • Crea un archivio chiavi su Edge e carica il certificato Edge e la chiave privata.
  • Se vuoi convalidare il certificato di backend, crea un archivio attendibilità su Edge che contenga il certificato e la catena CA ricevuti dal server di backend.
  • Aggiorna TargetEndpoint di eventuali proxy API che fanno riferimento al server di backend per configurare l'accesso TLS.

Utilizzo dell'alias chiave per specificare il certificato dell'archivio chiavi

Puoi definire più certificati, ciascuno con il proprio alias, nello stesso archivio chiavi. Per impostazione predefinita, Edge utilizza il primo certificato definito nell'archivio chiavi.

Facoltativamente, puoi configurare Edge in modo che utilizzi il certificato specificato dalla proprietà <KeyAlias>. Questo consente di definire un singolo archivio chiavi per più certificati e di selezionare quello che vuoi utilizzare nella definizione di TargetServer. Se Edge non riesce a trovare un certificato con un alias che corrisponde a <KeyAlias>, utilizza l'azione predefinita di selezione del primo certificato nell'archivio chiavi.

Gli utenti di Edge per il cloud pubblico devono contattare l'assistenza Apigee Edge per abilitare questa funzionalità.

Configurazione di TLS a due vie

Per configurare TLS bidirezionale:

  1. Crea l'archivio chiavi su Edge e carica il certificato e la chiave privata utilizzando la procedura descritta qui: Keystore e Truststore. Per questo esempio, crea un archivio chiavi denominato myTestKeystore che utilizzi il nome alias myKey per il certificato e la chiave privata.
  2. Utilizza la seguente chiamata API POST per creare il riferimento denominato myKeyStoreRef per l'archivio chiavi creato in precedenza:

    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
    

    Il riferimento specifica il nome dell'archivio chiavi e il tipo di riferimento come KeyStore.

    Utilizza la seguente chiamata API GET per visualizzare il riferimento:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Se vuoi convalidare il certificato di backend, crea un archivio attendibilità su Edge e carica la catena di certificati e CA, come descritto qui: Archivio chiavi e archivi attendibilità. Ad esempio, se devi creare un nome di archivio attendibilità, assegnagli il nome myTrustStore.
  4. Se hai creato un archivio attendibilità,utilizza la seguente chiamata API POST per creare il riferimento denominato myTrustStoreRef all'archivio attendibilità creato in precedenza:

    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. Utilizza l'interfaccia utente di gestione perimetrale per aggiornare la definizione TargetEndpoint per il proxy API (oppure, se definisci il proxy API in XML, modifica i file XML per il proxy):
    1. Accedi all'interfaccia utente di gestione perimetrale all'indirizzo https://enterprise.apigee.com.
    2. Nel menu dell'interfaccia utente di Gestione perimetrale, seleziona API.
    3. Seleziona il nome del proxy API da aggiornare.
    4. Seleziona la scheda Sviluppo.
    5. In Endpoint di destinazione, seleziona predefinito.
    6. Nell'area del codice, modifica l'elemento <HTTPTargetConnection> per aggiungere l'elemento <SSLInfo>. Assicurati di specificare l'archivio chiavi e l'alias chiave corretti e di impostare entrambi gli elementi <Enabled> e <ClientAuthEnabled> su 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. Salva il proxy API. Se è stato eseguito il deployment del proxy API, dopo il salvataggio viene eseguito nuovamente il deployment con la nuova impostazione.

Per ulteriori informazioni sulle opzioni disponibili in <TargetEndpoint>, compreso l'utilizzo delle variabili per fornire valori <SSLInfo> TargetEndpoint, consulta il riferimento alla configurazione del proxy API.

Attivazione di SNI in corso...

Edge supporta l'utilizzo di SNI (Server Name Indication) dai processori di messaggi per scegliere come target gli endpoint in Apigee Edge per il cloud e per i deployment nel cloud privato.

Affinché Edge per il cloud privato sia compatibile con le versioni precedenti dei backend di destinazione esistenti, Apigee ha disabilitato SNI per impostazione predefinita. Se il backend di destinazione è configurato per supportare SNI, puoi abilitare questa funzionalità. Per ulteriori informazioni, consulta Utilizzo di SNI con Edge.