Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
O Edge permite criar hosts virtuais com suporte a TLS unidirecional e bidirecional. Com o TLS de mão única, o cliente emite uma solicitação de sessão para um host virtual implantado em um roteador de borda, e o roteador responde com um certificado que contém a chave pública do host virtual. No caso de um certificado assinado, o cliente pode fazer uma solicitação à autoridade de certificação (CA, na sigla em inglês) para autenticar o certificado.
No TLS bidirecional, o cliente e o Edge transmitem certificados que são validados como parte de uma solicitação:
- O roteador de borda apresenta o certificado ao cliente TLS para se autenticar. Em seguida, o cliente verifica a identidade do servidor antes de enviar o certificado para ele.
- O cliente TLS apresenta o certificado ao Edge para se autenticar.
Consulte Sobre hosts virtuais para mais informações.
Como capturar informações de conexão TLS
Durante uma solicitação a um proxy de API por um host virtual compatível com TLS, o Edge pode capturar informações sobre a conexão TLS. O proxy de API pode acessar essas informações por meio de variáveis de fluxo para realizar análises e validação adicionais.
O tipo de informação TLS capturada pelo Edge depende da compatibilidade do host virtual com TLS unidirecional ou bidirecional. Por exemplo, para o TLS unidirecional, o Edge pode capturar informações sobre a criptografia TLS ou o protocolo TLS usado na conexão TLS.
Para TLS bidirecional, o Edge pode capturar todas as mesmas informações capturadas para TLS unidirecional e também capturar informações sobre o certificado do cliente. Por exemplo, o Edge pode capturar a impressão digital SHA1 do certificado do cliente e do certificado do cliente no formato PEM.
Capturar informações para TLS unidirecional e bidirecional
Na tabela a seguir, listamos as variáveis de fluxo que contêm informações de conexão TLS capturadas
pelo Edge e disponíveis para acesso no proxy de API. Essas informações são capturadas para TLS unidirecional e bidirecional configurando <ConnectionProperties>
como verdadeiro na definição do host virtual:
Variável Flow | Descrição |
---|---|
tls.cipher
|
A criptografia usada pela conexão TLS. |
tls.protocol
|
O protocolo usado pela conexão TLS. |
tls.server.name
|
O nome do servidor SNI solicitado. |
tls.session.id
|
O identificador da sessão. Essa variável de fluxo está disponível quando você define |
Como capturar informações adicionais de TLS durante a TLS bidirecional
Na tabela a seguir, listamos as variáveis de fluxo que contêm detalhes do certificado do cliente capturados pelo Edge
em TLS bidirecional. Essas informações são capturadas para TLS bidirecional configurando
<ClientProperties>
como verdadeiro na definição de host virtual:
Variável Flow | Descrição |
---|---|
tls.client.s.dn
|
O nome distinto (DN, na sigla em inglês) do assunto que identifica o certificado do cliente. |
tls.client.i.dn
|
O nome distinto (DN, na sigla em inglês) do emissor do certificado do cliente. |
tls.client.raw.cert
|
O certificado do cliente no formato PEM. |
tls.client.cert.serial
|
O número de série do certificado do cliente. |
tls.client.cert.fingerprint
|
Impressão digital SHA1 do certificado do cliente. |
tls.session.id
|
O identificador da sessão. Essa variável de fluxo está disponível quando você define
|
Como configurar um host virtual para capturar informações de TLS
Para configurar o host virtual para capturar informações de TLS, defina as seguintes propriedades
em <PropagateTLSInformation>
como true
.
<ConnectionProperties>
: ativa a captura de informações de conexão TLS para TLS unidirecional e bidirecional. O valor padrão éfalse
.<ClientProperties>
: ativa a captura de mais informações para TLS bidirecional. O valor padrão éfalse
.
Por exemplo, a definição de host virtual a seguir usa TLS bidirecional e permite a captura de ambos os tipos de informações TLS:
<VirtualHost name="secure"> .... <SSLInfo> <Enabled>true</Enabled> # Enable two-way TLS. <ClientAuthEnabled>true</ClientAuthEnabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <KeyAlias>ks-alias</KeyAlias> <KeyStore>ref://ks-ref</KeyStore> <TrustStore>ref://ts-ref</TrustStore> </SSLInfo> <PropagateTLSInformation> <ConnectionProperties>true</ConnectionProperties> <ClientProperties>true</ClientProperties> </PropagateTLSInformation> </VirtualHost>
Se você estiver transmitindo um corpo JSON, defina as propriedades como:
"propagateTLSInformation" : { "connectionProperties" : true, "clientProperties" : true }
Definir limites de tamanho de cabeçalho
Quando você ativa a captura de informações TLS em um host virtual, o Edge transmite essas informações usando cabeçalhos HTTP. Portanto, verifique se os limites de tamanho do cabeçalho estão definidos corretamente com base no uso do Edge para a nuvem ou do Edge para a nuvem privada:
- Edge para a nuvem: a Apigee define os tamanhos de cabeçalho corretamente.
- Edge para a nuvem privada: recurso não disponível.
Como acessar as variáveis de fluxo em um proxy de API
No proxy de API, é possível acessar e inspecionar as variáveis de fluxo TLS. Por exemplo, é possível usar a política AssignMessage para acessá-los e em JavaScript com a política de JavaScript.
Você também pode referenciar as variáveis de fluxo em um elemento <Condition>
de um proxy ou fluxo de destino, ou em um <Step>
ou <RouteRule>
. Por exemplo, é possível encaminhar
uma solicitação para destinos diferentes com base no SN do cliente.
Para mais informações, consulte: