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

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 servidores de back-end HTTPS sejam disponibilizados no mesmo endereço IP e porta sem que eles precisem usar o mesmo certificado TLS. É uma extensão do protocolo TLS. Quando a SNI está ativada em um cliente, o cliente transmite o nome do host do servidor de back-end como parte do handshake de TLS inicial. Isso permite que o servidor TLS determine qual certificado TLS será usado para validar a solicitação do cliente.

Por padrão, a SNI é desativada no componente Processador de mensagens no Edge para a nuvem privada, a fim de garantir a compatibilidade com versões anteriores dos servidores de back-end atuais. Caso seu servidor de back-end esteja configurado para oferecer suporte à SNI, você precisará ativar o SNI no componente do processador de mensagens. Caso contrário, as solicitações de API que passam pelo Apigee Edge vão apresentar falhas de handshake de TLS.

Neste documento, explicamos como:

Antes de começar

Identificação do servidor com SNI ativado

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

  1. Execute o comando openssl e tente se conectar ao nome do host do servidor relevante (roteador de borda ou servidor de back-end) sem transmitir o nome do servidor, conforme mostrado abaixo:
    openssl s_client -connect hostname:port
    
  2. É possível receber os certificados e, às vezes, ocorrer uma falha de handshake no comando openssl, 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 de borda 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 receber certificados diferentes nas etapas 1 e 2, isso indicará que o servidor especificado tem a SNI ativada.
  5. Se você quiser verificar isso para mais de um servidor de back-end, será necessário repetir as etapas acima para cada servidor de back-end.

Se você tiver um ou mais servidores de back-end com a SNI ativada, precisará ativá-la no componente Processador de mensagens, conforme explicado abaixo. Caso contrário, as solicitações de API que passam pelo Apigee Edge falharão com Falhas de handshake de TLS.

Ativar SNI entre os processadores de mensagens de borda e o servidor de back-end

Esta seção explica como ativar a SNI entre o processador de mensagens de borda e o servidor de back-end. A SNI pode ser ativada pela propriedade jsse.enableSNIExtension no componente 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 o SNI nos processadores de mensagens, execute as seguintes etapas:

  1. Localizar o token da propriedade jsse.enableSNIExtension
  2. Ativar o 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. Procure a propriedade jsse.enableSNIExtension no diretório de origem /opt/apigee/edge-message-processor/source do processador de mensagens 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 do processador de mensagens jsse.enableSNIExtension da seguinte maneira:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    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 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 arquivo a seguir em um editor. Se ainda não existir, crie-o.
    /opt/apigee/customer/application/message-processor.properties
    

    Por exemplo, para abrir o arquivo usando vi, digite 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 mudanças.
  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 está atualizada no processador de mensagens.
  7. Se você tiver mais de um processador de mensagens, repita as etapas acima em todos eles.

Desativar SNI entre os processadores de mensagens de borda e o servidor de back-end

Em geral, os problemas não ocorrem depois que você ativa a SNI. No entanto, se você observar problemas de conectividade entre o processador de mensagens de borda e o servidor de back-end após ativar a SNI, poderá desativar o SNI seguindo as etapas abaixo.

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

Desativar 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 arquivo a seguir em um editor. Se ainda não existir, crie-o.
    /opt/apigee/customer/application/message-processor.properties
    

    Por exemplo, para abrir o arquivo usando vi, digite 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 forma:
    conf_system_jsse.enableSNIExtension=false
    
  3. Salve as mudanças.
  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 está atualizada no processador de mensagens.
  7. Se você tiver mais de um processador de mensagens, repita as etapas acima em todos eles.

Como verificar a configuração de SNI nos processadores de mensagens

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

Mesmo que você use o token conf_system_jsse.enableSNIExtension para configurar a SNI no processador de mensagens, será 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 de SNI for atualizada com êxito no processador de mensagens, o comando acima mostrará o novo valor no arquivo system.properties.

    O resultado do exemplo do comando acima depois de você ativar o SNI no processador de mensagens é o seguinte:

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

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

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

    No exemplo de saída 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 o valor antigo da propriedade jsse.enableSNIExtension ainda aparecer, verifique se você seguiu todas as etapas descritas na seção apropriada para ativar ou desativar a SNI corretamente. Se você esqueceu alguma etapa, repita todas as etapas corretamente.
  4. Se ainda não for possível ativar/desativar a SNI , entre em contato com o suporte do Apigee Edge.