Configurazione di TLS per l'API BaaS

Edge per Private Cloud v4.18.01

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

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

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

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

Opzioni di configurazione 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, mentre il portale in esecuzione nel browser utilizza HTTPS per effettuare richieste ai nodi dello stack tramite il bilanciatore del carico. Il bilanciatore del carico utilizza HTTP per accedere ai nodi dello stack.
  • Configura TLS sul portale, sul bilanciatore del carico e sui nodi 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 stack

    In un ambiente di piccole dimensioni, ad esempio in un ambiente di test o di sviluppo, potresti avere un solo nodo stack, quindi 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 consiste nell'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 del portale predefinita 9000 e sul nodo stack 8080. Tuttavia, se vuoi, puoi modificare questa porta.

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

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

Configurazione di TLS sullo stack BaaS API

Per impostazione predefinita, TLS è disattivato per lo stack BaaS dell'API. Puoi quindi accedere all'API BaaS tramite HTTP utilizzando l'indirizzo IP o il nome DNS del nodo dello stack e della porta 8080. Ad esempio:

http://stack_IP:8080

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

https://stack_IP:8080

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

Lo stack può supportare un solo tipo di richiesta (HTTP o HTTPS) su una singola porta. Di conseguenza, se configuri l'accesso HTTPS sulla porta 8080, non puoi utilizzare HTTP per accedere alla porta 8080. Se configuri lo stack in modo da utilizzare la porta 8443 con HTTPS, lo stack non ascolterà più la porta 8080.

Utilizza la seguente procedura per configurare l'accesso TLS allo stack:

  1. Genera il file JKS dell'archivio chiavi contenente la certificazione TLS e la chiave privata. Per saperne di più, consulta Configurare TLS/SSL per Edge On Premises.
    Nota: assicurati che la password per l'archivio chiavi e la password per la chiave siano uguali.
  2. Copia il file JKS dell'archivio chiavi in una directory sul nodo Stack, ad esempio /opt/apigee/customer/application. La directory deve essere accessibile all'utente 'apigee'.
  3. Cambia la proprietà del file JKS in 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à, incluso il percorso del file JKS e la password nell'archivio chiavi e nella chiave. Se il file non esiste, crealo:
    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.jkstomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jkstomcat-server_keystore.file=/opt/apigee/customerkey/application/keystore.jkscat-password tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    # Utilizza questa proprietà per specificare una porta diversa.
    # tomcat-server_port=8080


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

    Utilizza la proprietà tomcat-server_keyalias per specificare l'alias dell'archivio chiavi. Hai impostato l'alias della chiave 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, visita la pagina 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 Spark
  7. Verifica che TLS funzioni eseguendo questo comando cURL sul nodo Stack utilizzando HTTPS:
    > curl -k https://localhost:8080/status -v

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

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

    Se il portale invia richieste dirette allo stack, configuralo per l'accesso allo stack tramite HTTPS come descritto nella sezione seguente.
  10. Utilizza la procedura riportata di seguito in "Configurare nodi dello stack BaaS API per TLS sullo stack o sul portale" per assicurarti che il nodo dello stack abbia gli URL TLS corretti quando genera le risposte degli utenti.

Configurazione del portale per l'accesso allo stack su 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 anche configurare il portale per effettuare queste chiamate tramite HTTPS.

In genere, un'installazione API BaaS viene configurata per:

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

    Configura il bilanciatore del carico per effettuare richieste ai nodi dello stack tramite HTTPS. Per ulteriori informazioni, consulta la documentazione sul bilanciatore del carico.

    In questa configurazione, il portale può accedere al bilanciatore del carico tramite HTTP o HTTPS, a seconda di come viene configurato. Se il bilanciatore del carico utilizza TLS, utilizza 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 per accedere allo stack tramite HTTPS come descritto di seguito.

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

  1. Configura l'accesso TLS sullo stack BaaS come descritto in precedenza o sul 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, crealo:
    baas.portal.config.overrideUrl=https://stackIP:port

    Specifica come valore di questa proprietà l'indirizzo IP o il nome e la porta DNS del nodo API Stack per l'installazione di un singolo nodo oppure del bilanciatore del carico se hai un bilanciatore del carico davanti ai nodi dello stack BaaS API.
  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 in alto, il tuo browser potrebbe non consentire le richieste allo stack dal portale. Se visualizzi un errore nel browser 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 dello stack API o del bilanciatore del carico.

Configurazione di TLS sul portale API BaaS

Per impostazione predefinita, gli utenti accedono al portale effettuando richieste HTTP non criptate sulla porta 9000 sul server del portale. Puoi configurare il portale in modo che utilizzi HTTPS per criptare l'invio di dati da e verso il portale.

Per impostazione predefinita, si accede 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 formato:

https://portal_IP:9443

In questo esempio, configurerai l'accesso TLS in modo da utilizzare la porta 9443. Tuttavia, la porta 9443 non è richiesta: puoi configurare il portale in modo che utilizzi un'altra porta.

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

Per configurare TLS per il portale:

  1. Crea un file della chiave e del certificato in formato PEM.
    Nota: assicurati che la chiave o il certificato non includano password o passphrase.
  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. Modifica 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, crealo:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem.portal1 usa TLS.protocols1.dll


    # 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 reboot
  7. Utilizza la procedura riportata di seguito in "Configurare nodi dello stack API BaaS per TLS sullo stack o sul portale" per assicurarti che il nodo dello 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, oppure se abiliti TLS direttamente sul nodo Portal o Stack, devi configurare i nodi con gli URL corretti per accedere allo stack e al portale. Ad esempio, i nodi dello stack richiedono queste informazioni quando:

  • Inclusione di un URL nelle risposte delle richieste API BaaS.
  • Aggiunta di link nei modelli email quando si reimposta una password o si inviano 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 l'utilizzo di TLS, utilizza il protocollo HTTPS. Devi includere la porta solo se utilizzi una porta non standard, ovvero una porta diversa dalla porta 80 per HTTP e dalla porta 443 per HTTPS.

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

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 Portal o configuri TLS sul nodo 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, vale a dire 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 Spark
  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 reboot