Accesso alle informazioni sulla connessione TLS in un proxy API

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Edge consente di creare host virtuali che supportano TLS unidirezionale e bidirezionale. Con TLS unidirezionale, il client invia una richiesta di sessione a un host virtuale di cui è stato eseguito il deployment su un router perimetrale e il router risponde con un certificato che contiene la chiave pubblica dell'host virtuale. Per un certificato firmato, il client può quindi inviare una richiesta all'autorità di certificazione (CA) per autenticare il certificato.

Nella crittografia TLS bidirezionale, sia il client che il certificato Edge Pass che vengono convalidati come parte di una richiesta:

  • Il router Edge presenta il certificato al client TLS per l'autenticazione. Il client verifica quindi l'identità del server prima di inviare il certificato al server.
  • Il client TLS presenta il certificato a Edge per l'autenticazione.

Per saperne di più, consulta Informazioni sugli host virtuali.

Acquisizione delle informazioni sulle connessioni TLS

Durante una richiesta a un proxy API attraverso un host virtuale che supporta TLS, Edge può acquisire informazioni sulla connessione TLS. Il proxy API può quindi accedere a queste informazioni tramite le variabili di flusso per eseguire ulteriori analisi e convalide.

Il tipo di informazioni TLS acquisite da Edge dipende dal fatto che l'host virtuale supporti TLS unidirezionale o bidirezionale. Ad esempio, per TLS unidirezionale, Edge può acquisire informazioni sulla crittografia TLS o sul protocollo TLS utilizzato nella connessione TLS.

Per TLS bidirezionale, Edge può acquisire tutte le stesse informazioni acquisite per TLS unidirezionale, e anche informazioni sul certificato del client. Ad esempio, Edge può acquisire l'impronta SHA1 del certificato client e quello del client in formato PEM.

Acquisizione di informazioni per TLS unidirezionale e bidirezionale

La tabella seguente elenca le variabili di flusso che contengono informazioni sulla connessione TLS acquisite da Edge e disponibili per l'accesso nel proxy API. Queste informazioni vengono acquisite per TLS unidirezionale e bidirezionale impostando <ConnectionProperties> su true nella definizione dell'host virtuale:

Variabile di flusso Descrizione
tls.cipher La crittografia utilizzata dalla connessione TLS.
tls.protocol Il protocollo utilizzato dalla connessione TLS.
tls.server.name Il nome del server SNI richiesto.
tls.session.id

L'identificatore di sessione.

Questa variabile di flusso è disponibile quando imposti <ConnectionProperties> o <ClientProperties> o su true.

Acquisizione di ulteriori informazioni TLS durante la crittografia TLS bidirezionale

La tabella seguente elenca le variabili di flusso che contengono i dettagli del certificato client acquisiti da Edge in TLS a due vie. Queste informazioni vengono acquisite per TLS bidirezionale impostando <ClientProperties> su true nella definizione dell'host virtuale:

Variabile di flusso Descrizione
tls.client.s.dn Il DN (DN) soggetto del certificato client.
tls.client.i.dn Il DN (DN) dell'emittente del certificato client.
tls.client.raw.cert Il certificato client in formato PEM.
tls.client.cert.serial Il numero di serie del certificato client.
tls.client.cert.fingerprint L'impronta SHA1 del certificato client.
tls.session.id

L'identificatore di sessione.

Questa variabile di flusso è disponibile quando imposti <ConnectionProperties> o <ClientProperties> su true.

Configurazione di un host virtuale per acquisire le informazioni TLS

Per configurare l'host virtuale in modo che acquisisca le informazioni TLS, imposta le seguenti proprietà in <PropagateTLSInformation> su true.

  • <ConnectionProperties>: abilita l'acquisizione delle informazioni sulle connessioni TLS per TLS unidirezionale e bidirezionale. Il valore predefinito è false.
  • <ClientProperties>: abilita l'acquisizione di informazioni aggiuntive per TLS bidirezionale. Il valore predefinito è false.

Ad esempio, la seguente definizione di host virtuale utilizza TLS bidirezionale e consente l'acquisizione di entrambi i tipi di informazioni 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 trasmetti un corpo JSON, imposta le proprietà come:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

Impostare i limiti delle dimensioni delle intestazioni

Quando abiliti l'acquisizione di informazioni TLS su un host virtuale, Edge passa queste informazioni utilizzando le intestazioni HTTP. Devi quindi assicurarti che i limiti delle dimensioni delle intestazioni siano impostati correttamente a seconda che utilizzi Edge per il cloud o Edge per il cloud privato:

  • Edge per il cloud: Apigee imposta correttamente le dimensioni delle intestazioni.
  • Edge per il cloud privato: funzionalità non disponibile.

Accesso alle variabili di flusso in un proxy API

Dal proxy API puoi accedere alle variabili di flusso TLS e controllarle. Ad esempio, puoi utilizzare il criterio AssignMessage per accedervi e accedervi in JavaScript con il criterio JavaScript.

Puoi anche fare riferimento alle variabili di flusso in un elemento <Condition> di un flusso proxy o target oppure in un elemento <Step> o <RouteRule>. Ad esempio, puoi indirizzare una richiesta a target diversi in base al numero di serie del client.

Per ulteriori informazioni, vedi: