Accesso alle informazioni sulla connessione TLS in un proxy API

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Edge consente di creare host virtuali che supportano TLS a una via e a due vie. Con TLS a una via, 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 a due vie, sia il client che Edge passano i certificati che vengono convalidati nell'ambito di una richiesta:

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

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

Acquisire informazioni sulla 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 queste informazioni tramite le variabili di flusso per eseguire analisi e convalide aggiuntive.

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

Per TLS a due vie, Edge può acquisire tutte le stesse informazioni acquisite per TLS a una via, e anche informazioni sul certificato del client. Ad esempio, Edge può acquisire l'impronta digitale SHA1 del certificato client e il certificato client in formato PEM.

Acquisire informazioni per TLS a una via e a due vie

La tabella seguente elenca le variabili di flusso che contengono le informazioni sulla connessione TLS acquisite da Edge e accessibili nel proxy API. Queste informazioni vengono acquisite sia per TLS a una via che a due vie 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 della sessione.

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

Acquisire informazioni TLS aggiuntive durante TLS a due vie

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 a due vie 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 digitale SHA1 del certificato client.
tls.session.id

L'identificatore della sessione.

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

Configurare un host virtuale per acquisire 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 sulla connessione TLS per TLS a una via e a due vie. Il valore predefinito è false.
  • <ClientProperties>: abilita l'acquisizione di informazioni aggiuntive per TLS a due vie. Il valore predefinito è false.

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

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

Impostare i limiti delle dimensioni dell'intestazione

Quando abiliti l'acquisizione delle informazioni TLS su un host virtuale, Edge passa queste informazioni utilizzando le intestazioni HTTP. Devi quindi assicurarti che i limiti delle dimensioni dell'intestazione siano impostati in modo appropriato a seconda che tu stia utilizzando Edge for the Cloud o Edge for the Private Cloud:

  • Edge for the Cloud: Apigee imposta le dimensioni dell'intestazione in modo appropriato.
  • Edge for the Private Cloud: funzionalità non disponibile.

Accedere alle variabili di flusso in un proxy API

All'interno del proxy API, puoi accedere alle variabili di flusso TLS e ispezionarle. Ad esempio, puoi utilizzare la policy AssignMessage per accedervi o accedervi in JavaScript con la policy JavaScript.

Puoi anche fare riferimento alle variabili di flusso in un elemento <Condition> di un flusso di proxy o di destinazione, oppure in un elemento <Step> o <RouteRule>. Ad esempio, potresti instradare una richiesta a destinazioni diverse in base al nome comune del client.

Per saperne di più, consulta: