Como usar a SNI com o Edge

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

A indicação de nome do servidor (SNI, na sigla em inglês) permite que vários destinos HTTPS sejam exibidos com o mesmo endereço IP e porta sem exigir que eles usem o mesmo certificado TLS. Quando a SNI está ativada em um cliente, ele transmite o nome do host do endpoint de destino como parte do handshake de TLS inicial. Isso permite que o servidor TLS determine qual certificado TLS precisa ser usado para validar a solicitação.

Por exemplo, se o destino da solicitação for https://example.com/request/path, o cliente TLS adicionará a extensão server_name à solicitação de handshake de TLS, conforme mostrado abaixo:

O Edge oferece suporte à SNI para:

  • Solicitações de um app cliente para um proxy de API. Nesse cenário, o Edge atua como o servidor TLS
  • Solicitações do Edge para o back-end. Nesse cenário, o Edge atua como o cliente TLS.

Para mais informações sobre SNI, consulte:

Suporte a SNI para uma solicitação ao proxy de API no Edge

O suporte a SNI para solicitações a proxies de API é controlado por aliases de hosts e hosts virtuais.

Sobre hosts virtuais e aliases de host

No Edge, um host virtual define o endereço IP e a porta ou o nome e a porta DNS em que um proxy de API é exposto e, por extensão, o URL que os apps usam para acessar um proxy de API. O endereço IP/nome DNS corresponde a um roteador de borda, e o número da porta é uma porta aberta no roteador.

Ao criar o host virtual, você também especifica o alias do host virtual. Normalmente, esse é o nome DNS do host virtual. Como parte da determinação do proxy de API que processa a solicitação, o roteador compara o cabeçalho Host da solicitação recebida com a lista de aliases de host disponíveis definida por todos os hosts virtuais.

A combinação de alias do host e número da porta do host virtual precisa ser exclusiva para todos os hosts virtuais na instalação do Edge. Isso significa que vários hosts virtuais poderão usar o mesmo número de porta se tiverem aliases de host diferentes.

Um host virtual também define se o proxy de API é acessado usando o protocolo HTTP ou pelo protocolo HTTPS criptografado usando TLS. Ao configurar um host virtual para usar HTTPS, associe o host virtual a um keystore que contenha o certificado e a chave privada usados pelo host virtual durante o handshake de TLS.

Para mais informações sobre hosts virtuais, consulte:

Como a SNI funciona com aliases de host

A SNI permite que você tenha vários hosts virtuais definidos na mesma porta, cada um com diferentes certificados e chaves TLS. Em seguida, o Edge determina o host virtual e o par de certificados/chaves usados pelo TLS, com base na extensão server_name na solicitação de handshake de TLS.

O roteador de borda lê a extensão server_name na solicitação de handshake de TLS e a usa para pesquisar nos aliases de host de todos os hosts virtuais. Se o roteador detectar uma correspondência com um alias de host, ele usará o certificado e a chave TLS do host virtual associado ao alias do host. Se nenhuma correspondência for encontrada, o handshake do TLS falhará.

Em vez de causar uma falha no handshake de TLS, é possível definir um par de certificado/chave padrão, conforme descrito nas próximas seções.

Como definir um par de certificados/chaves padrão no Edge para o Cloud

A Apigee fornece um certificado TLS e uma chave privada para dar suporte a HTTPS. Muitos clientes preferem usar os próprios certificados e chaves privadas no momento da implantação, mas é possível implantar as APIs usando o certificado e a chave da Apigee.

No Edge para o Cloud, se o roteador não puder corresponder o cabeçalho SNI a um alias de host ou se o cliente não aceitar SNI, o roteador usará o certificado padrão fornecido pela Apigee, que é *.apigee.net.

Como definir um par de certificados/chaves padrão no Edge para a nuvem privada

No Edge da nuvem privada, se nenhuma correspondência for encontrada entre a extensão server_name e os aliases de host de todos os hosts virtuais ou se o cliente solicitante não for compatível com a SNI, será possível configurar o roteador para usar o certificado/chave de um host virtual padrão na porta. O host virtual padrão é definido por uma combinação de nome da organização, nome do ambiente e nome do host virtual, no formato:

orgName_envName_vhName

O roteador usa o certificado/chave da combinação de orgName_envName_vhName que vem primeiro em ordem alfabética. Por exemplo, a solicitação chega na porta 443 e há dois hosts virtuais definidos para a organização example no ambiente prod:

  • nome do host virtual = default
  • nome do host virtual = test

Neste exemplo, o roteador usa o certificado/chave do host virtual chamado default porque example_prod_default vem em ordem alfabética antes de example_prod_test.

Para ativar o host virtual padrão:

  1. No primeiro nó do roteador, edite /opt/apigee/customer/application/router.properties. Se esse arquivo não existir, crie-o.
  2. Adicione a seguinte propriedade ao arquivo para definir um host virtual padrão:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Reinicie o roteador:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. Repita essas etapas em todos os outros roteadores.

Em vez de usar o certificado/chave do host virtual padrão, é possível definir explicitamente o certificado/chave padrão no roteador. Use o procedimento a seguir para definir um par de certificados/chaves padrão explícito:

  1. No primeiro nó do roteador, copie o certificado e a chave privada para um local no nó do roteador que pode ser acessado pelo usuário da Apigee. Por exemplo, /opt/apigee/customer/application.
  2. Mude a propriedade dos arquivos para o usuário "apigee.":
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. Editar /opt/apigee/customer/application/router.properties. Se esse arquivo não existir, crie-o.
  4. Adicione as seguintes propriedades ao arquivo para poder especificar o certificado/chave padrão:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. Defina as propriedades a seguir em router.properties para especificar o local do certificado e da chave:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. Reinicie o roteador:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Repita essas etapas em todos os outros roteadores.

Suporte a SNI para solicitações do Edge para o back-end

O Edge permite o uso de SNI de processadores de mensagens para segmentar endpoints no Apigee Edge para implantações do Cloud e de nuvem privada. Por padrão, a SNI é ativada nos processadores de mensagens de borda para a nuvem e desativada na nuvem privada.

Como usar a SNI para o back-end no Edge para a nuvem privada

Para que o Edge da nuvem privada seja compatível com versões anteriores dos back-ends de destino atuais, a Apigee desativou a SNI por padrão. Se o back-end de destino estiver configurado para oferecer suporte à SNI, será possível ativar esse recurso conforme descrito abaixo para sua versão do Edge.

Nenhuma outra configuração específica do Edge é necessária. Se o ambiente de destino estiver configurado para SNI, o Edge terá suporte. O Edge extrai automaticamente o nome do host do URL da solicitação e o adiciona à solicitação de handshake de TLS.

Ativar a SNI entre o Edge e o back-end para o Edge versão 4.15.07.0x

Siga o procedimento a seguir para ativar a SNI:

  1. No primeiro nó do processador de mensagens, abra o arquivo /opt/apigee4/conf/apigee/message-processor/system.properties em um editor.
  2. Defina a propriedade a seguir como verdadeira no system.properties:
    jsse.enableSNIExtension=true
  3. Reinicie os processadores de mensagens:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Repita essas etapas em todos os demais processadores de mensagens.

Ativar a SNI entre o Edge e o back-end para o Edge versão 4.16.01 e posterior

Siga o procedimento a seguir para ativar a SNI:

  1. No primeiro nó do processador de mensagens, edite /opt/apigee/customer/application/message-processor.properties. Se esse arquivo não existir, crie-o.
  2. Adicione a seguinte propriedade ao arquivo:
    conf_system_jsse.enableSNIExtension=true
  3. Reinicie o processador de mensagens:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Repita essas etapas em todos os demais processadores de mensagens.