Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Esta seção mostra como configurar o TLS para tráfego de um proxy para um destino.
Sobre a definição de opções de TLS em um endpoint ou servidor de destino
Um destino pode ser representado por um objeto XML como este:
<HTTPTargetConnection> <Properties/> <URL>https:myTargetAddress</URL> <SSLInfo> <Enabled>true</Enabled> <Enforce>true</Enforce> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://myTruststoreRef</TrustStore> <IgnoreValidationErrors>false</IgnoreValidationErrors> <Protocols>myProtocols</Protocols> <Ciphers>myCipher</Ciphers> </SSLInfo> </HTTPTargetConnection>
A área da configuração do endpoint de destino que você modifica para configurar o TLS é definida pela tag
<SSLInfo>. Use a mesma tag <SSLInfo> para configurar um
endpoint ou servidor de destino.
Para saber mais sobre os elementos filhos de <SSLInfo>, consulte
Configuração de TargetEndpoint de TLS/SSL.
A tabela a seguir descreve os elementos de configuração do TLS usados pela
tag <SSLInfo>:
| Elemento | Descrição |
|---|---|
<Enabled> |
O bloco <SSLInfo> pode ser usado para TLS/SSL unidirecional e bidirecional.
Se definido como O valor padrão de |
<Enforce> |
Aplica SSL rigoroso entre a Apigee e o back-end de destino. Se definidas como Se não for definido ou for definido como |
<ClientAuthEnabled> |
Ativa o TLS bidirecional (também conhecido como TLS mútuo ou mTLS) entre a Apigee e o cliente da API ou entre a Apigee e o back-end de destino. A ativação do TLS bidirecional exige que você configure um truststore na Apigee e um truststore. |
<KeyStore> |
Um keystore com chaves privadas usadas para autenticação do cliente de saída |
<KeyAlias> |
O alias especificado quando você fez upload de um certificado e uma chave privada para o armazenamento de chaves. |
<TrustStore> |
Um keystore com certificados de servidor confiáveis. |
<IgnoreValidationErrors> |
Indica se os erros de validação são ignorados. Se o sistema de back-end usar SNI e retornar um certificado com um nome distinto (DN, na sigla em inglês) de assunto que não corresponda ao nome do host, não será possível ignorar o erro, e a conexão falhará. Observação: se |
<Ciphers> |
Criptografias compatíveis para TLS/SSL de saída. Se nenhuma criptografia for especificada, todas as criptografias disponíveis para o JVM serão permitidas. Para restringir as criptografias, adicione os elementos a seguir listando as criptografias compatíveis: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
<Protocols> |
Protocolos compatíveis com TLS/SSL de saída. Se nenhum protocolo for especificado, todos os protocolos disponíveis para JVM serão permitidos. Para restringir protocolos, especifique-os explicitamente. Por exemplo, para permitir apenas TLS v1.2 ou TLS v1.3: <Protocols> <Protocol>TLSv1.2</Protocol> <Protocol>TLSv1.3</Protocol> </Protocols> |
Sobre a configuração dos elementos <KeyStore> e <TrustStore>
No exemplo acima, o keystore e o truststore são especificados usando referências, no formato:
<KeyStore>ref://myKeystoreRef</KeyStore> <TrustStore>ref://myTruststoreRef</TrustStore>
Neste exemplo:
myKeystoreRefé uma referência que contém o nome do keystore. Neste exemplo, o nome do keystore é myKeystore.myTruststoreRefé uma referência que contém o nome do truststore. Neste exemplo, o nome do truststore é myTruststore.
Quando um certificado expira, é necessário atualizar o endpoint/servidor de destino para especificar o keystore ou truststore que contém o novo certificado. No entanto, se você usar referências, poderá modificar o valor das referências para refletir os novos nomes de keystore ou truststore em vez de modificar o endpoint de destino/servidor de destino. Não é necessário entrar em contato com o Cloud Customer Care do Google Cloud para mudar o valor da referência.
Como alternativa, é possível especificar o nome do keystore e o nome do truststore diretamente:
<KeyStore>myKeystore</KeyStore> <TrustStore>myTruststore</TrustStore>
Se você especificar diretamente o nome do keystore ou do truststore, entre em contato com o Suporte do Google Cloud.
Uma terceira opção é usar variáveis de fluxo:
<KeyStore>{ssl.keystore}</KeyStore>
<TrustStore>{ssl.truststore}</TrustStore>É possível usar variáveis de fluxo para especificar dinamicamente um keystore ou truststore, com um efeito semelhante ao uso de uma referência. Para mais informações, consulte Como usar variáveis de fluxo para definir valores de TLS/SSL dinamicamente.
Sobre a configuração do TLS
Todos os clientes da Apigee, pagos e de avaliação, têm controle total sobre a configuração dos endpoints/servidores de destino. Além disso, os clientes pagos da Apigee têm controle total sobre as propriedades do TLS.
Como processar certificados expirados
Se um certificado TLS expirar ou se a configuração do sistema mudar para que o certificado não seja mais válido, será necessário atualizar o certificado. Ao configurar o TLS para um endpoint de destino/servidor de destino, decida como você executará essa atualização antes de realizar qualquer configuração.
Quando um certificado expira
Na Apigee, você armazena certificados em um destes dois locais:
- Keystore: contém o certificado TLS e a chave privada usados para identificar a entidade durante o handshake de TLS.
- Truststore: contém certificados confiáveis em um cliente TLS, usado para validar o certificado de um servidor TLS apresentado ao cliente. Em geral, esses certificados são autoassinados, assinados por uma AC confiável ou usados como parte do TLS bidirecional (também conhecido como TLS mútuo ou mTLS).
O método usado para especificar o keystore e o truststore no endpoint ou servidor de destino determina como você executa a atualização do certificado. Você pode usar referências, nomes diretos ou variáveis de fluxo. Cada método tem diferentes repercussões no processo de atualização, conforme descrito na tabela a seguir:
| Tipo de configuração | Como atualizar/substituir certificado | Uso / Impacto |
|---|---|---|
| Referência (recomendado) |
Keystore:crie um keystore com um novo nome e um alias com o mesmo nome do alias antigo. Truststore:crie uma truststore com um novo nome. O nome do alias não importa. |
Atualize a referência para apontar para o novo repositório.
Não é necessário entrar em contato com o suporte da Apigee. Sem inatividade. |
| Variável de fluxo |
Keystore:crie um keystore com um novo nome e um alias com o mesmo nome ou um novo. Truststore:crie uma truststore com um novo nome. |
Transmita a variável de fluxo atualizada em cada solicitação com o nome da nova loja.
Não é necessário entrar em contato com o suporte da Apigee. Sem inatividade. |
| Direto |
Método 1: criar um novo repositório (recomendado para evitar inatividade) Crie um novo keystore ou truststore com um novo nome e faça upload do novo certificado (e da chave privada, se estiver criando um keystore). |
Atualize a configuração do endpoint ou servidor de destino para especificar diretamente o novo nome da loja e implante novamente o proxy de API.
Não é necessário entrar em contato com o suporte da Apigee. |
| Direto |
Método 2a: atualização no local (excluir e recriar) Exclua o keystore ou o truststore e crie-o novamente com o mesmo nome. |
As solicitações de API vão falhar durante o período de exclusão e recriação. Como os processadores de mensagens armazenam em cache as lojas especificadas diretamente, eles não detectam automaticamente o certificado atualizado. Você precisa entrar em contato com o Suporte do Google Cloud para reiniciar os processadores de mensagens. |
| Direto |
Método 2b: atualização no local (upload do Truststore) Para truststores apenas, faça upload de um novo certificado diretamente para o truststore atual. |
Como os processadores de mensagens armazenam em cache as lojas especificadas diretamente, eles não detectam o novo certificado automaticamente. Você precisa entrar em contato com o Suporte do Google Cloud para reiniciar os processadores de mensagens. |