Configurazione di TLS per l'API BaaS

Edge for Private Cloud versione 4.17.01

TLS (Transport Layer Security, il cui predecessore è SSL) è la tecnologia di sicurezza standard per garantire la messaggistica sicura e criptata nell'ambiente API. Puoi configurare TLS sui nodi del portale API BaaS e dello stack API BaaS.

L'immagine seguente mostra un tipico diagramma di deployment per API BaaS con un singolo nodo del portale BaaS e tre nodi API BaaS Stack.

Gli sviluppatori utilizzano un browser per inviare richieste al portale. Per impostazione predefinita, le richieste utilizzano il protocollo HTTP sulla porta 9000 del nodo del portale.

Questo deployment include un bilanciatore del carico tra i nodi Portal e Stack. In questa configurazione, il portale invia richieste HTTP al bilanciatore del carico, che a sua volta le inoltra a uno dei nodi dello stack. Questo è l'ambiente di deployment consigliato per un sistema di produzione.

Opzioni di configurazione di TLS

Quando configuri TLS per l'API BaaS, hai a disposizione diverse opzioni:

  • Configura TLS sul portale e sul bilanciatore del carico per i nodi dello stack

    In questa configurazione, gli sviluppatori utilizzano il protocollo HTTPS per accedere al portale e il portale eseguito nel browser utilizza HTTPS per inviare richieste ai nodi dello stack tramite il bilanciatore del carico. Il bilanciatore del carico utilizza HTTP per accedere ai nodi dello stack.
  • Configura TLS sui nodi del portale, del bilanciatore del carico e dello stack

    Per maggiore sicurezza, configura il bilanciatore del carico in modo che utilizzi TLS per accedere ai nodi dello stack.
  • Configura TLS sul portale e su un singolo nodo dello stack

    In un ambiente di piccole dimensioni, ad esempio in un ambiente di test o di sviluppo, potresti avere un solo nodo dello stack, il che significa che non è necessario includere un bilanciatore del carico. In questa configurazione, configura TLS sia sul portale sia sui nodi dello stack.
  • Configura TLS su un bilanciatore del carico per il portale

    Un'opzione non mostrata sopra è utilizzare un bilanciatore del carico davanti al nodo del portale. In questa configurazione, puoi configurare TLS sul bilanciatore del carico e, facoltativamente, sulla connessione tra il bilanciatore del carico e il portale.

Assicurati che la porta TLS sia aperta

Le procedure riportate di seguito configurano TLS sulla porta predefinita del portale 9000 e sul nodo dello stack 8080. Tuttavia, se vuoi, puoi modificare questa porta.

Indipendentemente dalla porta utilizzata, devi assicurarti che sia aperta sul nodo. Ad esempio, puoi utilizzare questo comando per aprire la porta 8443:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

Configurazione di TLS nello stack BaaS API

Per impostazione predefinita, TLS è disabilitato per l'API BaaS Stack. Poi accedi all'API BaaS tramite HTTP utilizzando l'indirizzo IP o il nome DNS del nodo dello stack e la porta 8080. Ad esempio:

http://stack_IP:8080

In alternativa, puoi configurare l'accesso TLS all'API BaaS in modo da potervi accedere nel seguente formato:

https://stack_IP:8080

In questo esempio, configuri l'accesso TLS in modo che utilizzi la porta 8080. Tuttavia, la porta 8080 non è obbligatoria : puoi configurare lo stack in modo che utilizzi una porta diversa. L'unico requisito è che il firewall consenta il traffico sulla porta specificata.

La suite può supportare un solo tipo di richiesta (HTTP o HTTPS) su una singola porta. Pertanto, se configuri l'accesso HTTPS sulla porta 8080, non puoi utilizzare HTTP per accedere alla porta 8080. Se configuri lo stack in modo che utilizzi la porta 8443 con HTTPS, lo stack non rimane in ascolto sulla porta 8080.

Per configurare l'accesso TLS allo stack, segui la procedura riportata di seguito:

  1. Genera il file JKS dell'archivio chiavi contenente la certificazione TLS e la chiave privata. Per saperne di più, consulta Configurazione di TLS/SSL per Edge On-Premises.
    Nota: assicurati che la password nell'archivio chiavi e per la chiave sia la stessa.
  2. Copia il file JKS del keystore in una directory sul nodo di stack, ad esempio /opt/apigee/customer/application. La directory deve essere accessibile all'utente "apigee".
  3. Cambia la proprietà del file JKS con l'utente 'apigee':
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    dove keystore.jks è il nome del file del tuo archivio chiavi.
  4. Modifica il file /opt/apigee/customer/application/usergrid.properties per impostare le seguenti proprietà, inclusi il percorso del file JKS e la password sull'archivio chiavi e sulla chiave. Se il file non esiste, creane uno:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Per impostazione predefinita, l'accesso TLS utilizza la porta 8080.
    # Utilizza questa proprietà per specificare una porta diversa.
    # tomcat-server_port=8080


    Avviso: il valore password deve essere in testo normale. Pertanto, devi proteggere usergrid.properties da accessi non autorizzati.

    Utilizza la proprietà tomcat-server_keyalias per specificare l'alias del keystore. L'alias della chiave viene impostato al momento della creazione della chiave. Ad esempio, puoi impostarlo utilizzando l'opzione -alias al comando keytool.

    Utilizza tomcat-server_ssl.protocols per impostare i protocolli TLS supportati dallo stack. Per un elenco dei protocolli supportati da Java 8, consulta http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Configura il nodo Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Riavvia lo stack BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid reboot
  7. Verifica che TLS funzioni eseguendo il seguente comando cURL sul nodo Stack utilizzando HTTPS:
    > curl -k https://localhost:8080/status -v

    Se TLS è configurato correttamente, dovresti vedere una risposta contenente informazioni sullo stato.

    Se hai configurato l'accesso TLS su una porta diversa da 8080, modifica il comando riportato sopra per utilizzare la porta corretta.
  8. Ripeti l'operazione su tutti i nodi dello stack.
  9. Se hai un bilanciatore del carico davanti ai nodi dello stack, configuralo in modo da effettuare richieste ai nodi dello stack tramite HTTPS. Per ulteriori informazioni, consulta la documentazione del bilanciatore del carico.

    Se il portale invia richieste dirette allo stack, configuralo in modo che acceda allo stack tramite HTTPS come descritto nella sezione seguente.
  10. Segui la procedura descritta in "Configurare i nodi dello stack BaaS API per TLS nello stack o nel portale" per assicurarti che il nodo dello stack abbia gli URL TLS corretti quando genera le risposte degli utenti.

Configurazione del portale per accedere allo stack tramite TLS

Il portale BaaS in esecuzione in un browser funziona effettuando chiamate API allo stack BaaS. Se configuri lo stack BaaS per l'utilizzo di TLS, devi configurare anche il portale per effettuare queste chiamate tramite HTTPS.

In genere, un'installazione di API BaaS è configurata per:

  • Utilizza un bilanciatore del carico tra il portale e i nodi dello stack

    Configura il bilanciatore del carico in modo che invii richieste ai nodi dello stack tramite HTTPS. Per ulteriori informazioni, consulta la documentazione del bilanciatore del carico.

    In questa configurazione, il portale può accedere al bilanciatore del carico tramite HTTP o HTTPS, a seconda di come configuri il bilanciatore del carico. Se il bilanciatore del carico utilizza TLS, segui la procedura riportata di seguito per configurare il portale in modo che invii richieste al bilanciatore del carico HTTPS.
  • Fai in modo che il portale invii richieste dirette allo stack

    Configura il portale in modo che acceda allo stack tramite HTTPS come descritto di seguito.

Utilizza la procedura seguente per configurare il portale BaaS API in modo da effettuare chiamate API tramite HTTPS:

  1. Configura l'accesso TLS nello stack BaaS come descritto sopra o nel bilanciatore del carico per i nodi dello stack come descritto nella documentazione del bilanciatore del carico.
  2. Modifica /opt/apigee/customer/application/portal.properties per impostare la seguente proprietà. Se il file non esiste, creane uno:
    baas.portal.config.overrideUrl=https://stackIP:port

    Specifica come valore di questa proprietà l'indirizzo IP o il nome DNS e la porta del nodo API Stack per un'installazione a un solo nodo oppure del bilanciatore del carico se ne hai uno davanti ai nodi API BaaS Stack.
  3. Configura il nodo del portale:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Riavvia il portale utilizzando il comando:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal reboot
  5. Se hai utilizzato un certificato autofirmato durante la configurazione dell'accesso TLS allo stack sopra indicato, il browser potrebbe non consentire le richieste allo stack dal portale. Se nel browser viene visualizzato un errore che indica che l'accesso HTTPS allo stack non è consentito, richiedi il seguente URL nel browser e aggiungi un'eccezione di sicurezza per consentire l'accesso:
    https://stackIP:port/status

    Specifica l'indirizzo IP o il nome DNS e la porta del nodo o del bilanciatore del carico dello stack API.

Configurazione di TLS nel portale API BaaS

Per impostazione predefinita, gli utenti accedono al portale inviando richieste HTTP non criptate tramite la porta 9000 sul server del portale. Puoi configurare il portale in modo che utilizzi HTTPS per criptare i dati inviati e ricevuti dal portale.

Per impostazione predefinita, accedi al portale tramite HTTP utilizzando l'indirizzo IP o il nome DNS del nodo del portale e la porta 9000. Ad esempio:

http://portal_IP:9000

In alternativa, puoi configurare l'accesso TLS al portale in modo da potervi accedere nel seguente modo:

https://portal_IP:9443

In questo esempio, configuri l'accesso TLS in modo che utilizzi la porta 9443. Tuttavia, la porta 9443 non è obbligatoria: puoi configurare il portale in modo che utilizzi una porta diversa.

Il portale può supportare un solo tipo di richiesta (HTTP o HTTPS) su una singola porta. Pertanto, se configuri l'accesso HTTPS sulla porta 9000, non puoi utilizzare HTTP per accedere alla porta 9000. Se configurerai il portale in modo che utilizzi la porta 9443 con HTTPS, il portale non rimarrà più in ascolto sulla porta 9000.

Per configurare TLS per il portale:

  1. Crea un file della chiave e un file del certificato in formato PEM.
    Nota: assicurati che non siano presenti password/passphrase sulla chiave o sul certificato.
  2. Copia i file PEM in una directory sul nodo del portale, ad esempio /opt/apigee/customer/application. La directory deve essere accessibile all'utente "apigee".
  3. Cambia la proprietà dei file PEM all'utente "apigee":
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Modifica il file /opt/apigee/customer/application/portal.properties per impostare le seguenti proprietà. Se il file non esiste, creane uno:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Per impostazione predefinita, l'accesso TLS utilizza la porta 9000.
    # Utilizza questa proprietà per specificare una porta diversa.
    # baas.portal.listen=9000


    Utilizza baas.portal.ssl.protocols per impostare i protocolli TLS supportati dal portale. Per un elenco dei protocolli supportati, consulta l'elenco dei nomi dei protocolli SSL definiti da Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Configura il nodo del portale:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Riavvia il portale:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Utilizza la procedura riportata di seguito in "Configurare i nodi dello stack BaaS dell'API per TLS sullo stack o sul portale" per assicurarti che il nodo Stack abbia l'URL TLS corretto per il portale.

Configura i nodi API BaaS per TLS sullo stack o sul portale

Se includi un bilanciatore del carico davanti ai nodi dello stack o del portale o se attivi TLS direttamente sul nodo del portale o dello stack, devi configurare i nodi con gli URL corretti per accedere allo stack e al portale. Ad esempio, i nodi di stack richiedono queste informazioni quando:

  • Inclusione di un URL nelle risposte delle richieste API BaaS.
  • Aggiunta di link nei modelli email quando viene reimpostata una password o vengono inviate altre notifiche.
  • Reindirizzamento degli utenti a pagine specifiche del portale.

Se utilizzi un bilanciatore del carico davanti ai nodi dello stack o configuri TLS sul nodo dello stack, imposta la seguente proprietà in /opt/apigee/customer/application/usergrid.properties:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

Sostituisci http://localhost:8080 con l'URL del bilanciatore del carico. Se il bilanciatore del carico è configurato per utilizzare TLS, utilizza il protocollo HTTPS. Devi includere la porta solo se utilizzi una porta non standard, ovvero qualcosa di diverso dalla porta 80 per HTTP e dalla porta 443 per HTTPS.

Devi anche impostare la seguente proprietà in /opt/apigee/customer/application/portal.properties se utilizzi un bilanciatore del carico davanti ai nodi dello stack:

baas.portal.config.overrideUrl=http://localhost:8080

Sostituisci http://localhost:8080 con l'URL del bilanciatore del carico per lo stack.

Se utilizzi un bilanciatore del carico davanti al nodo del portale o configuri TLS sul nodo dello stack, imposta le seguenti proprietà in usergrid.properties:

usergrid-deployment_portal.url=http://localhost:9000

Sostituisci http://localhost:9000 con l'URL del bilanciatore del carico. Se il bilanciatore del carico è configurato per l'utilizzo di TLS, utilizza il protocollo HTTPS. Devi includere la porta solo se utilizzi una porta non standard, ovvero diversa dalla porta 80 per HTTP e dalla porta 443 per HTTPS.

Dopo aver modificato usergrid.properties:

  1. Configura il nodo Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Riavvia lo stack BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid reboot
  3. Se hai modificato portal.properties, configura il nodo Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Riavvia il portale BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart