Como configurar a SNI entre o Edge Message Processor e o servidor de back-end

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

A indicação de nome do servidor (SNI, na sigla em inglês) permite que vários servidores de back-end HTTPS sejam veiculados no mesmo endereço IP e porta sem exigir que esses servidores de back-end usem o mesmo certificado TLS. É uma extensão do protocolo TLS. Quando a SNI está ativada em um cliente, ele transmite o nome do host do servidor de back-end como parte do handshake TLS inicial. Isso permite que o servidor TLS determine qual certificado TLS precisa ser usado para validar a solicitação do cliente.

Por padrão, a SNI está desativada no componente do processador de mensagens no Edge para nuvem privada para garantir a compatibilidade com versões anteriores dos servidores de back-end atuais. Se o servidor de back-end estiver configurado para oferecer suporte à SNI, será necessário ativá-la no componente do processador de mensagens. Caso contrário, as solicitações de API que passam pelo Apigee Edge vão falhar com falhas de handshake TLS.

Neste documento, explicamos como:

Antes de começar

Identificação do servidor ativado para SNI

Esta seção descreve como identificar se um servidor de back-end está ativado para SNI.

  1. Execute o comando openssl e tente se conectar ao nome do host do servidor relevante (roteador do Edge ou servidor de back-end) sem transmitir o nome do servidor, conforme mostrado abaixo:
    openssl s_client -connect hostname:port
  2. Você pode receber os certificados e, às vezes, observar a falha de handshake no openssl comando, conforme mostrado abaixo:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
  3. Execute o comando openssl e tente se conectar ao nome do host do servidor relevante (roteador do Edge ou servidor de back-end) transmitindo o nome do servidor , conforme mostrado abaixo:
    openssl s_client -connect hostname:port -servername hostname
  4. Se você receber uma falha de handshake na etapa 1 ou certificados diferentes nas etapas 1 e 2, isso indica que o servidor especificado está ativado para SNI.
  5. Se você quiser verificar isso para mais de um servidor de back-end, então você precisa repetir as etapas acima para cada servidor de back-end.

Se você descobrir que tem um ou mais servidores de back-end ativados para SNI, será necessário ativar a SNI no componente do processador de mensagens, conforme explicado abaixo. Caso contrário, as solicitações de API que passam pelo Apigee Edge vão falhar com falhas de handshake TLS.

Ativar a SNI entre os processadores de mensagens do Edge e o servidor de back-end

Esta seção explica como ativar a SNI entre o processador de mensagens do Edge e o servidor de back-end server. A SNI pode ser ativada pela propriedade jsse.enableSNIExtension no componente do processador de mensagens. Para configurar qualquer propriedade no processador de mensagens, use o token de acordo com a sintaxe descrita em Como configurar o Edge.

Para ativar a SNI nos processadores de mensagens, siga estas etapas:

  1. Localizar o token da propriedade jsse.enableSNIExtension
  2. Ativar a SNI no processador de mensagens

Localizar o token da propriedade jsse.enableSNIExtension

As etapas a seguir descrevem como localizar o token da propriedade jsse.enableSNIExtension:

  1. Pesquise a propriedade jsse.enableSNIExtension no diretório de origem do processador de mensagens /opt/apigee/edge-message-processor/source usando o seguinte comando:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
  2. A saída desse comando mostra o token da propriedade jsse.enableSNIExtension do processador de mensagens da seguinte maneira:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}

    Em que a string entre as tags {T}{/T} é o nome do token que pode ser definido no arquivo .properties do processador de mensagens.

    Assim, o token da propriedade jsse.enableSNIExtension é o seguinte:

    conf_system_jsse.enableSNIExtension

Ativar a SNI no processador de mensagens

As etapas a seguir descrevem como ativar a SNI no componente do processador de mensagens da Apigee.

  1. Na máquina do processador de mensagens, abra o seguinte arquivo em um editor. Se ele ainda não já existir, crie-o.
    /opt/apigee/customer/application/message-processor.properties

    Por exemplo, para abrir o arquivo usando vi, insira o seguinte comando:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Adicione uma linha no seguinte formato ao arquivo de propriedades:
    conf_system_jsse.enableSNIExtension=true
  3. Salve as alterações.
  4. Verifique se esse arquivo de propriedades pertence ao usuário apigee, conforme mostrado abaixo:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Reinicie o processador de mensagens, conforme mostrado abaixo:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Verifique se a configuração da SNI foi atualizada no processador de mensagens.
  7. Se você tiver mais de um processador de mensagens, repita as etapas acima em todos os processadores de mensagens.

Desativar a SNI entre os processadores de mensagens do Edge e o servidor de back-end

Geralmente, não há problemas após ativar a SNI. No entanto, se você observar problemas de conectividade entre o processador de mensagens do Edge e o servidor de back-end após ativar a SNI, sempre poderá desativá-la seguindo estas etapas.

A SNI pode ser desativada definindo a propriedade jsse.enableSNIExtension de volta como false no componente do processador de mensagens.

Desativar a SNI nos processadores de mensagens

As etapas a seguir descrevem como desativar a SNI nos processadores de mensagens da Apigee.

  1. Na máquina do processador de mensagens, abra o seguinte arquivo em um editor. Se ele ainda não já existir, crie-o.
    /opt/apigee/customer/application/message-processor.properties

    Por exemplo, para abrir o arquivo usando vi, insira o seguinte comando:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Se a linha conf_system_jsse.enableSNIExtension=true existir em /opt/apigee/customer/application/message-processor.properties, modifique-a da seguinte maneira:
    conf_system_jsse.enableSNIExtension=false
  3. Salve as alterações.
  4. Verifique se esse arquivo de propriedades pertence ao usuário apigee, conforme mostrado abaixo:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Reinicie o processador de mensagens, conforme mostrado abaixo:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Verifique se a configuração da SNI foi atualizada no processador de mensagens.
  7. Se você tiver mais de um processador de mensagens, repita as etapas acima em todos os processadores de mensagens.

Verificar a configuração da SNI nos processadores de mensagens

Esta seção explica como verificar se a configuração da SNI foi atualizada com sucesso nos processadores de mensagens.

Mesmo que você use o token conf_system_jsse.enableSNIExtension para configurar a SNI no processador de mensagens, é necessário verificar se a propriedade real jsse.enableSNIExtension foi definida com o novo valor.

  1. Na máquina do processador de mensagens, pesquise a propriedade jsse.enableSNIExtension no diretório /opt/apigee/edge-message-processor/conf e verifique se ela foi definida com o novo valor, conforme mostrado abaixo:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
  2. Se a configuração da SNI for atualizada no processador de mensagens, o comando acima mostrará o novo valor no arquivo system.properties.

    O resultado de amostra do comando acima depois de ativar a SNI no processador de mensagens é o seguinte:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true

    Da mesma forma, o resultado de amostra do comando acima depois de desativar a SNI no processador de mensagens é o seguinte:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false

    Na saída de exemplo acima, observe que a propriedade jsse.enableSNIExtension foi atualizada para o novo valor true ou false em system.properties. Isso indica que a SNI foi ativada ou desativada no processador de mensagens.

  3. Se você ainda vir o valor antigo da propriedade jsse.enableSNIExtension, então verifique se seguiu todas as etapas descritas na seção apropriada para ativar ou desativar a SNI corretamente. Se você perdeu alguma etapa, repita todas as etapas corretamente.
  4. Se você ainda não conseguir ativar/desativar a SNI , entre em contato com o suporte do Apigee Edge.