Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
La funzione Server Name Indication (SNI) consente di gestire più destinazioni HTTPS dallo stesso IP indirizzo e porta senza richiedere che queste destinazioni usino lo stesso certificato TLS. Quando SNI è impostato su abilitato su un client, il client trasmette il nome host dell'endpoint di destinazione come parte della TLS handshake. Ciò consente al server TLS di determinare quale certificato TLS utilizzare per la convalida la richiesta.
Ad esempio, se il target della richiesta è https://example.com/request/path
,
il client TLS aggiunge l'estensione server_name
all'handshake TLS
come mostrato di seguito:
Edge supporta SNI per:
- Richieste da un'app client a un proxy API. In questo scenario, Edge agisce come TLS server
- Richieste da Edge al backend. In questo scenario, Edge agisce come client TLS.
Per ulteriori informazioni su SNI, vedi:
- https://en.wikipedia.org/wiki/Server_Name_Indication
- http://blog.layershift.com/sni-ssl-production-ready/
Supporto SNI per una richiesta al proxy API su Dispositivi periferici
Il supporto SNI per le richieste ai proxy API è controllato da alias host e .
Informazioni sugli annunci virtuali host e alias host
Con Edge, un host virtuale definisce l'indirizzo IP e la porta (o nome e porta DNS) in cui viene esposto un proxy API e, per estensione, l'URL utilizzato dalle app per accedere a un proxy API. L'indirizzo IP/nome DNS corrisponde a un router perimetrale e il numero di porta è una porta aperta il router.
Quando crei l'host virtuale, specifichi anche l'alias host dell'host virtuale.
In genere si tratta del nome DNS dell'host virtuale. Nell'ambito della determinazione del proxy API che
gestisce la richiesta, il router confronta l'intestazione Host
della richiesta in entrata con
elenco di alias host disponibili definiti da tutti gli host virtuali.
La combinazione di alias host e numero di porta per l'host virtuale deve essere univoca per tutte di host virtuali nell'installazione Edge. Ciò significa che più host virtuali possono utilizzare stesso numero di porta se hanno alias host diversi.
Un host virtuale definisce inoltre se si accede al proxy API utilizzando il protocollo HTTP, oppure dal protocollo HTTPS criptato tramite TLS. Quando configuri un host virtuale per l'utilizzo di HTTPS, associare l'host virtuale a un archivio chiavi che contiene il certificato e la chiave privata utilizzati durante l'handshake TLS.
Per ulteriori informazioni sugli host virtuali, consulta:
- Informazioni sugli host virtuali
- Configurazione di TLS accesso a un'API per il cloud privato
- Keystore e Truststores
Come funziona SNI con alias host
SNI consente di avere più host virtuali definiti sulla stessa porta, ognuno con diverse
Certificati e chiavi TLS. Edge determina quindi l'host virtuale e la coppia certificato/chiave utilizzata da TLS.
in base a server_name
nella richiesta di handshake TLS.
Il router perimetrale legge l'estensione server_name
nell'handshake TLS
richiesta, e la utilizza per cercare gli alias host da tutte le istanze
. Se il router rileva una corrispondenza con un alias host, utilizza il certificato e la chiave TLS
all'host virtuale associato all'alias host. Se non viene trovata alcuna corrispondenza, l'handshake TLS non va a buon fine.
Anziché avere esito negativo per l'handshake TLS, puoi definire una coppia certificato/chiave predefinita, come descritti nelle sezioni successive.
Definizione di una coppia certificato/chiave predefinita in Edge per il cloud
Apigee fornisce un certificato TLS e una chiave privata per supportare HTTPS. Anche se molti clienti se preferiscono usare il proprio certificato e la propria chiave privata al momento del deployment, puoi eseguire il deployment utilizzando il certificato e la chiave Apigee.
In Edge per il cloud, se il router non riesce a far corrispondere l'intestazione SNI a un alias host o se non supporta SNI, il router utilizza il certificato predefinito fornito da Apigee, che è *.apigee.net.
Definizione di una coppia di certificati/chiavi predefinita in Edge per il cloud privato
In Edge per il cloud privato, se non viene trovata alcuna corrispondenza tra l'estensione server_name
e gli alias host
da tutti gli host virtuali o se il client che ha inviato la richiesta non supporta SNI, puoi configurare
Router per utilizzare il certificato/la chiave di un host virtuale predefinito sulla porta. L'host virtuale predefinito è
definiti da una combinazione di nome organizzazione, nome ambiente e nome host virtuale,
modulo:
orgName_envName_vhName
Il router utilizza il certificato/la chiave della combinazione di orgName_envName_vhName che
compare per prima in ordine alfabetico. Ad esempio, se la richiesta arriva sulla porta 443,
due host virtuali definiti per l'organizzazione example
nell'ambiente prod
:
- nome host virtuale =
default
- nome host virtuale =
test
In questo esempio, il router utilizza il certificato/la chiave dell'host virtuale denominato default
perché example_prod_default
precede example_prod_test
in ordine alfabetico.
Per attivare l'host virtuale predefinito:
- Sul primo nodo del router, modifica
/opt/apigee/customer/application/router.properties
. Se il file non esiste, crealo. - Aggiungi la seguente proprietà al file per consentirti di definire un host virtuale predefinito:
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
- Riavvia il router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Ripeti questi passaggi su tutti i router rimanenti.
Anziché utilizzare il certificato/la chiave dell'host virtuale predefinito, puoi definire esplicitamente la certificato o chiave predefinito sul router. Utilizza la seguente procedura per definire un valore predefinito esplicito coppia certificato/chiave:
- Sul primo nodo router, copia il certificato e la chiave privata in una posizione sul nodo router
accessibile dall'utente apigee. Ad esempio,
/opt/apigee/customer/application
. - Cambia la proprietà dei file in 'apigee. utente:
chown apigee:apigee /opt/apigee/customer/application/myCert.pem
chown apigee:apigee /opt/apigee/customer/application/myKey.pem
- Modifica
/opt/apigee/customer/application/router.properties
. Se il file non esiste, crealo. - Aggiungi le seguenti proprietà al file per consentirti di specificare il certificato/la chiave predefiniti:
conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true - Imposta le seguenti proprietà in
router.properties
per specificare la posizione del certificato e della chiave:conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
- Riavvia il router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Ripeti questi passaggi su tutti i router rimanenti.
Supporto SNI per le richieste da Edge a il backend
Edge supporta l'utilizzo di SNI dei processori di messaggi per scegliere come target gli endpoint in Apigee Edge per Cloud e per i deployment nel cloud privato. Per impostazione predefinita, la funzionalità SNI è abilitata sui processori di messaggi Edge per il cloud e disabilitato nel cloud privato.
Utilizzo SNI al backend in Edge per il cloud privato
Per Edge per il cloud privato, affinché sia compatibile con le versioni precedenti dei backend di destinazione esistenti, Apigee ha disabilitato SNI per impostazione predefinita. Se il backend di destinazione è configurato per supportare SNI, puoi abilitare questa funzione come descritto di seguito per la tua versione di Edge.
Non sono necessarie altre configurazioni specifiche di Edge. Se il tuo ambiente di destinazione è configurato SNI ed Edge lo supportano. Edge estrae automaticamente il nome host dall'URL della richiesta e lo aggiunge alla richiesta di TLS handshake.
Abilita SNI tra Edge e il backend per Edge versione 4.15.07.0x
Utilizza la seguente procedura per abilitare SNI:
- Sul primo nodo del processore di messaggi, apri il file
/opt/apigee4/conf/apigee/message-processor/system.properties
in un editor. - Imposta la seguente proprietà su true in
system.properties
:jsse.enableSNIExtension=true
- Riavvia i processori di messaggi:
/opt/apigee4/bin/apigee-service message-processor restart
- Ripeti questi passaggi su tutti gli altri processori di messaggi.
Abilita SNI tra Edge e il backend per Edge versione 4.16.01 e successive
Utilizza la seguente procedura per abilitare SNI:
- Sul primo nodo del processore di messaggi, modifica
/opt/apigee/customer/application/message-processor.properties
. Se il file non esiste, crealo. - Aggiungi la seguente proprietà al file:
conf_system_jsse.enableSNIExtension=true
- Riavvia il processore di messaggi:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Ripeti questi passaggi su tutti gli altri processori di messaggi.