Como configurar o TLS do Edge para o back-end (nuvem e nuvem privada)

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Um proxy de API funciona como um mapeamento de um endpoint disponível publicamente para seu serviço de back-end. Um host virtual define a forma como o proxy de API público é exposto a um app. Para exemplo, o host virtual determina se o proxy de API pode ser acessado usando TLS. Quando você configurar um proxy de API, editar sua definição de ProxyEndpoint para configurar os hosts virtuais aos quais ele usa.

O TargetEndpoint é o equivalente de saída do ProxyEndpoint. Funções do TargetEndpoint como um cliente HTTP do Edge para um serviço de back-end. Ao criar um proxy de API, você pode use zero ou mais TargetEndpoints.

Saiba mais:

Configurar um TargetEndpoint TargetServer

Para configurar um TargetEndpoint, edite o objeto XML que define o TargetEndpoint. Você pode edite o TargetEndpoint editando o arquivo XML que define o TargetEndpoint em seu proxy de API ou edite-o na IU de gerenciamento de borda.

Para usar a IU de gerenciamento do Edge para editar o TargetEndpoint:

  1. Faça login na IU de gerenciamento de borda em https://enterprise.apigee.com.
  2. Selecione o nome do proxy de API que será atualizado.
  3. Selecione a guia Desenvolver.
  4. Em Endpoints de destino, selecione padrão.
  5. Na área de código, a definição TargetEndpoint é exibida, semelhante a esta:
    <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. Configure um truststore conforme descrito abaixo em Sobre a configuração de TLS com o back-end
  7. Faça as alterações e salve o proxy. Salvar o proxy de API se ele tiver sido implantado o reimplanta com a nova configuração.

Observe que a definição de TargetEndpoint contém uma propriedade name. Você usa o valor de a propriedade name para configurar a definição ProxyEndpoint de um proxy de API para usar o o TargetEndpoint. Consulte a referência de configuração do proxy de API para mais informações.

TargetEndpoints pode ser configurado para referenciar um TargetServer, em vez do URL de destino. Uma configuração do TargetServer separa URLs de endpoint concretos da Configurações do TargetEndpoint. TargetServers são usados para dar suporte ao balanceamento de carga e failover em várias instâncias de servidores de back-end.

Veja abaixo um exemplo de definição de TargetServer:

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

Um TargetServer é referenciado pelo nome no <HTTPTargetConnection>. em uma definição de TargetEndpoint. É possível configurar um ou mais TargetServers nomeados, conforme mostrado abaixo.

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

Consulte Balanceamento de carga entre servidores de back-end para saber mais.

Sobre a configuração de TLS com o back-end

Antes de configurar o acesso por TLS ao back-end, é preciso entender duas importantes pontos:

  1. Por padrão, o Edge não valida o certificado de back-end. Você precisa criar um truststore para configurar Edge para validar o certificado.
  2. Use uma referência para especificar o keystore ou o truststore usado pelo Edge.

Ambas as considerações são descritas abaixo.

Como definir um truststore para ativar a validação de certificados

Ao fazer uma solicitação TLS usando um TargetEndpoint ou TargetServer, o Edge não validar por padrão o certificado TLS recebido do servidor de back-end. Isso significa que o Edge não valida se:

  • O certificado foi assinado por uma AC confiável.
  • o certificado não expirou.
  • O certificado apresenta um nome comum. Se houver um nome comum, o Edge não validará se o nome comum corresponde ao nome do host especificado no URL.

Para configurar o Edge para validar o certificado de back-end, faça o seguinte:

  1. Criar um truststore no Edge.
  2. Faça upload do certificado ou da cadeia de certificados do servidor para o truststore. Se o certificado do servidor for assinado por terceiros, será necessário fazer o upload do completa da cadeia de certificados, incluindo o certificado da CA raiz, ao truststore. Não há CAs implicitamente confiáveis.
  3. Adicionar o truststore à definição de TargetEndpoint ou TargetServer.
.

Consulte Keystores e Truststores para mais informações.

Exemplo:

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

Usar uma referência para um keystore ou truststore

O exemplo abaixo mostra como configurar um TargetEndpoint ou TargetServer oferecem suporte a TLS. Como parte da configuração do TLS, você especifica um truststore e um keystore como parte de um Definição de TargetEndpoint ou TargetServer.

A Apigee recomenda altamente que você use uma referência ao keystore e truststore na definição de TargetEndpoints ou TargetServer. A vantagem de usar uma referência é que basta atualizar a referência para apontar para um keystore ou um truststore diferente e, assim, atualize o certificado TLS.

Referências a keystores e truststores em a definição TargetEndpoints ou TargetServer funcionam da mesma forma para hosts virtuais.

Converter um TargetEndpoint ou TargetServer para usar uma referência

É possível que você tenha definições de TargetEndpoint ou TargetServer usa o nome literal do keystore e do truststore. Para converter o TargetEndpoint ou TargetServer para usar referências:

  1. Atualize a definição TargetEndpoint ou TargetServer para usar uma referência.
  2. Reinicie os processadores de mensagens do Edge:
    • Para clientes de nuvem pública, entre em contato com o suporte do Apigee Edge para reiniciar os processadores de mensagens.
    • Para clientes de nuvem privada, reinicie os processadores de mensagens de borda por vez.
  3. Confirme se o TargetEndpoint ou TargetServer está funcionando corretamente.

Como configurar o TLS unidirecional para o back-end servidor

Ao usar uma definição de TargetEndpoint, configurar o acesso TLS unidirecional do Edge (cliente TLS) ao servidor de back-end (servidor TLS) não requer nenhuma configuração adicional no Edge. É para o servidor de back-end para configurar o TLS corretamente.

Você só precisa garantir que o elemento <URL> na A definição de TargetEndpoint faz referência ao serviço de back-end pelo protocolo HTTPS e você ativar o TLS:

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

Se você estiver usando um TargetServer para definir o serviço de back-end, ative o TLS na definição de TargetServer:

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

No entanto, se quiser que o Edge valide o certificado de back-end, será necessário criar um truststore que contém o certificado de back-end ou a cadeia de certificados. Depois, você especifica o truststore a definição de TargetEndpoint:

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

Ou na definição de 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>

Para configurar o TLS unidirecional:

  1. Se quiser validar o certificado de back-end, crie um truststore no Edge e faça upload o certificado de back-end ou a cadeia de CA, conforme descrito em Keystores e Truststores. Neste exemplo, se você tiver que criar um truststore, nomeie-o myTrustStore:
  2. Se você criou um truststore, use a seguinte chamada de API POST para criar a referência chamada myTrustStoreRef para o truststore que você criou acima:

    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. Use a interface de gerenciamento do Edge para atualizar a definição de TargetEndpoint para o proxy de API (ou Se você definir o proxy de API em XML, edite os arquivos XML para o proxy):
    1. Faça login na IU de gerenciamento do Edge em https://enterprise.apigee.com.
    2. No menu da interface de gerenciamento de borda, selecione APIs.
    3. Selecione o nome do proxy de API que será atualizado.
    4. Selecione a guia Desenvolvimento.
    5. Em Endpoints de destino, selecione padrão.
    6. Na área de código, edite o elemento <HTTPTargetConnection> para adicione o elemento <SSLInfo>. Especifique a referência do truststore correta e defina <Enabled> como verdadeiro:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Salve o proxy de API. Se o proxy de API tiver sido implantado, salvá-lo o reimplanta com o nova configuração.

Como configurar o TLS bidirecional para o back-end servidor

Se você quiser oferecer suporte a TLS bidirecional entre o Edge (cliente TLS) e o servidor de back-end (TLS) de destino):

  • Crie um keystore no Edge e faça upload do certificado e da chave privada do Edge.
  • Se quiser validar o certificado de back-end, crie um truststore no Edge que contenha o e a cadeia da AC que você recebeu do servidor de back-end.
  • Atualize o TargetEndpoint de qualquer proxy de API que faça referência ao servidor de back-end para configurar Acesso TLS.
.

Como usar o alias da chave para especificar o certificado do keystore

É possível definir vários certificados, cada um com o próprio alias, no mesmo keystore. Por padrão, o Edge usa o primeiro certificado definido no keystore.

Opcionalmente, configure o Edge para usar o certificado especificado pela propriedade <KeyAlias>. Assim, você pode definir um único keystore para vários certificados e selecione o que você quer usar na definição de TargetServer. Se o Edge não conseguir encontrar um certificado com um alias que corresponda a <KeyAlias>, ele usará a ação padrão de selecionar o primeiro certificado no keystore.

Os usuários do Edge para nuvem pública precisam entrar em contato com o suporte do Apigee Edge para ativar esse recurso.

Como configurar o TLS bidirecional

Para configurar o TLS bidirecional:

  1. Crie o keystore no Edge e faça upload do certificado e da chave privada usando o procedimento descritos em Keystores e Truststores. Para este exemplo, crie um keystore chamado myTestKeystore que usa uma nome do alias de myKey para o certificado e a chave privada.
  2. Use a seguinte chamada da API POST para criar a referência chamado myKeyStoreRef ao keystore que você criou acima:

    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
    

    A referência especifica o nome do keystore e o tipo de referência como KeyStore.

    Use a chamada GET API a seguir para visualizar a referência:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Se você quiser validar o certificado de back-end, crie um truststore no Edge e faça upload do certificado e da CA. conforme descrito em Keystores e Truststores. Para este exemplo, se você tiver que criar um nome de truststore, use myTrustStore.
  4. Se você criou um truststore, use a seguinte chamada de API POST para criar a referência chamada myTrustStoreRef para o truststore que você criou acima:

    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. Use a interface de gerenciamento do Edge para atualizar a definição de TargetEndpoint para o proxy de API (ou Se você definir o proxy de API em XML, edite os arquivos XML para o proxy):
    1. Faça login na IU de gerenciamento de borda em https://enterprise.apigee.com.
    2. No menu da interface de gerenciamento de borda, selecione APIs.
    3. Selecione o nome do proxy de API que será atualizado.
    4. Selecione a guia Desenvolvimento.
    5. Em Endpoints de destino, selecione padrão.
    6. Na área de código, edite o elemento <HTTPTargetConnection> para adicione o <SSLInfo> . Certifique-se de especificar o keystore e o alias de chave corretos e definir os dois Elementos <Enabled> e <ClientAuthEnabled> como verdadeiros:
      <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. Salve o proxy de API. Se o proxy de API tiver sido implantado, salvá-lo o reimplanta com o nova configuração.

Para mais informações sobre as opções disponíveis no <TargetEndpoint>, incluindo o uso de variáveis para fornecer valores de <SSLInfo> ao TargetEndpoint, consulte a referência de configuração do proxy de API.

Ativação de SNI

O Edge oferece suporte ao uso da indicação de nome do servidor (SNI, na sigla em inglês) de processadores de mensagens para segmentar endpoints no Apigee Edge para nuvem e implantações de nuvem privada.

Para que o Edge para a nuvem privada seja compatível com versões anteriores dos seus back-ends de destino, A Apigee desativou o SNI por padrão. Se o back-end de destino estiver configurado para aceitar SNI, ative esse recurso. Consulte Como usar a SNI com o Edge para mais informações.