Accesso alle informazioni sulla connessione TLS in un proxy API

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

Edge ti 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 Edge e il router risponde con un certificato contenente 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.

In TLS bidirezionale, sia il client sia Edge trasmettono i certificati convalidati nell'ambito di una richiesta:

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

Per ulteriori informazioni, vedi Informazioni sugli host virtuali.

Acquisizione delle informazioni di connessione TLS

Durante una richiesta a un proxy API tramite un host virtuale che supporta TLS, Edge può acquisire informazioni sulla connessione TLS. Il proxy API può quindi accedere a tali informazioni tramite 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 sul protocollo o sulla crittografia TLS utilizzata nella connessione TLS.

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

Acquisizione di informazioni sia per TLS a un senso sia per TLS a doppio senso

La tabella seguente elenca le variabili di flusso che contengono le informazioni sulla connessione TLS acquisite da Edge e disponibili per l'accesso nel proxy API. Queste informazioni vengono acquisite sia per e TLS a due vie impostando <ConnectionProperties> su true nelle definizione 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 della sessione.

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

Acquisizione di informazioni TLS aggiuntive durante TLS bidirezionale

La tabella seguente elenca le variabili di flusso che contengono i dettagli del certificato client acquisiti da Edge in TLS bidirezionale. 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 nome distinto (DN) del soggetto del certificato client.
tls.client.i.dn Il nome distinto (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 della sessione.

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

Configurazione di un host virtuale per acquisire informazioni TLS

Per configurare l'host virtuale per l'acquisizione delle informazioni TLS, imposta le seguenti proprietà da <PropagateTLSInformation> a true.

  • <ConnectionProperties>: attiva l'acquisizione delle informazioni sulla connessione TLS per il protocollo TLS unidirezionale o bidirezionale. Il valore predefinito è false.
  • <ClientProperties>: attiva l'acquisizione di informazioni aggiuntive per TLS bidirezionale. Il valore predefinito è false.

Ad esempio, la seguente definizione di host virtuale utilizza il protocollo TLS a due vie e consente l'acquisizione 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 stai passando un corpo JSON, imposta le proprietà come segue:

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

Impostare i limiti di dimensione dell'intestazione

Quando attivi l'acquisizione delle informazioni TLS su un host virtuale, Edge le trasmette utilizzando le intestazioni HTTP. Devi quindi assicurarti che i limiti delle dimensioni dell'intestazione siano impostati in modo appropriato a seconda che utilizzi Edge per il cloud o Edge per il cloud privato:

  • Edge per il cloud: Apigee imposta le dimensioni delle intestazioni in modo appropriato.
  • Edge per il Private Cloud: funzionalità non disponibile.

Accesso alle variabili di flusso in un proxy API

Dal proxy API, puoi accedere e ispezionare le variabili di flusso TLS. Ad esempio, puoi utilizzare il criterio AssignMessage per 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 o in un <Step> o <RouteRule>. Ad esempio, puoi instradare una richiesta a diversi target in base all'SN del client.

Per ulteriori informazioni, vedi: