Cómo configurar TLS para BaaS de API

Edge for Private Cloud v. 4.17.05

TLS (seguridad de la capa de transporte, cuyo predecesor es SSL) es la tecnología de seguridad estándar para garantizar una mensajería segura y encriptada en todo tu entorno de API. Puedes configurar TLS en el Portal de BaaS de APIs y en los nodos de pilas de BaaS.

En la siguiente imagen, se muestra un diagrama de implementación típico para las BaaS de las APIs con un solo portal de BaaS y tres nodos de pila BaaS de APIs.

Los desarrolladores usan un navegador para realizar solicitudes al Portal. De forma predeterminada, las solicitudes usan el protocolo protocolo en el puerto 9000 del nodo del portal.

Esta implementación incluye un balanceador de cargas entre los nodos del portal y de la pila. En este el portal realiza solicitudes HTTP al balanceador de cargas, y este reenvía las solicitudes a uno de los nodos de la pila. Esta es la implementación recomendada para un sistema de producción.

Opciones de configuración de TLS

Cuando configuras TLS para BaaS de APIs, tienes varias opciones:

  • Configura TLS en el portal y en el balanceador de cargas para los nodos de pila.

    En esta configuración, los desarrolladores usan el protocolo HTTPS para acceder al Portal y al Portal que se ejecuta en el navegador, usa HTTPS para realizar solicitudes a los nodos de pila a través del del balanceador de cargas. El balanceador de cargas usa HTTP para acceder a los nodos de pila.
  • Configura TLS en el portal, el balanceador de cargas y los nodos de pila.

    Para mayor seguridad, configura el balanceador de cargas de modo que use TLS para acceder a los nodos de la pila.
  • Configura TLS en el portal y en un solo nodo de pila

    En un entorno pequeño, como en un entorno de pruebas o desarrollo, es posible que solo tengas nodo de pila único, lo que significa que no hay necesidad de incluir un balanceador de cargas. En esta configuración, configurar TLS en los nodos del portal y de la pila.
  • Configura TLS en un balanceador de cargas para el portal

    Una opción que no se muestra arriba es usar un balanceador de cargas frente al nodo del portal. En ese puedes configurar TLS en el balanceador de cargas y, de forma opcional, en el entre el balanceador de cargas y el portal.

Asegúrate de que el puerto TLS esté abierto

Los siguientes procedimientos configuran TLS en el puerto predeterminado del portal 9000 y el nodo de pila de 8080. Sin embargo, puedes cambiar este puerto si lo deseas.

Sin importar el puerto que uses, debes asegurarte de que esté abierto en el nodo. Para Por ejemplo, puedes usar el siguiente comando para abrir el puerto 8443:

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

Configura TLS en la pila de BaaS de la API

De forma predeterminada, TLS está inhabilitado para la pila de BaaS de la API. Luego, accede a la API de BaaS a través de HTTP con la dirección IP o el nombre de DNS del nodo de pila y el puerto 8080. Por ejemplo:

http://stack_IP:8080

Como alternativa, puedes configurar el acceso TLS a la API de BaaS para poder acceder a ella en formulario:

https://stack_IP:8080

En este ejemplo, se configura el acceso TLS para usar el puerto 8080. Sin embargo, el puerto 8080 no es obligatorio. puede configurar la pila para que use un puerto diferente. El único requisito es que las reglas de firewall permite el tráfico a través del puerto especificado.

La pila solo puede admitir un tipo de solicitud (HTTP o HTTPS) en un solo puerto. Por lo tanto, si configuras el acceso HTTPS en el puerto 8080, no puedes usar HTTP para acceder al puerto 8080. Si configurar la pila para usar el puerto 8443 con HTTPS; luego, la pila ya no escuchará en el puerto 8,080.

Usa el siguiente procedimiento para configurar el acceso TLS a la pila:

  1. Genera el archivo JKS de almacén de claves que contiene tu certificación TLS y tu clave privada. Para ver más consulta Configura TLS/SSL para Edge On Instalaciones.
    Nota: Asegúrate de que las contraseñas del almacén de claves y de la clave sean las mismas.
  2. Copia el archivo JKS del almacén de claves en un directorio del nodo de pila, como /opt/apigee/customer/application. El directorio debe ser accesible para el cliente usuario.
  3. Cambiar la propiedad del archivo JKS a Apigee usuario:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    donde keystore.jks es el nombre del archivo de almacén de claves.
  4. Edita /opt/apigee/customer/application/usergrid.properties para establecer las siguientes propiedades, incluida la ruta de acceso al archivo JKS y la contraseña de el almacén de claves y la clave. Si no existe ese archivo, créalo:
    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
    # De forma predeterminada, el acceso a TLS usa el puerto 8080.
    # Usa esta propiedad para especificar un puerto diferente.
    # tomcat-server_port=8080


    Advertencia: El valor de la contraseña debe ser texto claro. Por lo tanto, debes proteger usergrid.properties contra recursos no autorizados. el acceso a los datos.

    Usa tomcat-server_keyalias para especificar el alias del almacén de claves. Debes establecer el alias de la clave en el momento en que la creaste. Por ejemplo, puedes establecerlo mediante la opción -alias para el comando keytool.

    Usa tomcat-server_ssl.protocols para configurar los protocolos TLS que admite la pila. Para obtener una lista de los protocolos compatibles con Java 8, consulta http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Configura el nodo de pila:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Reinicia la pila de BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Ejecuta el siguiente comando cURL en el nodo de la pila para confirmar que TLS funciona HTTPS:
    > curl -k https://localhost:8080/status -v

    Si TLS está configurado correctamente, deberías ver una respuesta con información de estado.

    Si configuraste el acceso TLS a través de un puerto que no sea 8080, modifica el comando anterior para usar el el puerto correcto.
  8. Repite el proceso en todos los nodos de la pila.
  9. Si tienes un balanceador de cargas frente a los nodos de pila, configura el para enviar solicitudes a los nodos de la pila a través de HTTPS. Consulta la documentación en tu balanceador de cargas para obtener más información.

    Si el portal hace solicitudes directas a la Pila, configúralo para accederás a la pila a través de HTTPS, como se describe en la siguiente sección.
  10. Usa el procedimiento que aparece a continuación en "Configura nodos de pila de BaaS de APIs para TLS en la pila o el portal" para asegurarse de que el nodo de pila tenga las URLs TLS correctas al generar de respuestas ante incidentes.

Configurando el portal para acceder a la pila a través de TLS

El portal de BaaS que se ejecuta en un navegador funciona a través de llamadas a la API a la pila de BaaS. Si configura la pila de BaaS para usar TLS; luego, también debes configurar el portal para hacer esas llamadas a través de HTTPS.

Una instalación de BaaS de API suele configurarse de la siguiente manera:

  • Usa un balanceador de cargas entre los nodos del portal y los de pila

    Configurar el balanceador de cargas para realizar solicitudes a los nodos de pila a través de HTTPS Consulta la sobre tu balanceador de cargas para obtener más información.

    En esta configuración, el portal puede acceder al balanceador de cargas a través de HTTP o HTTPS, según cómo configurar el balanceador de cargas. Si el balanceador de cargas usa TLS, usa el siguiente procedimiento para configurar el portal para realizar solicitudes al balanceador de cargas de HTTPS,
  • Haz que el portal realice solicitudes directas a la pila

    Configura el portal para acceder a la pila a través de HTTPS, como se describe a continuación.

Usa el siguiente procedimiento para configurar el portal de BaaS de la API para realizar llamadas a la API a través de HTTPS:

  1. Configura el acceso TLS en la pila BaaS como se describió anteriormente o en el balanceador de cargas de la Apila nodos como se describe en la documentación de tu balanceador de cargas.
  2. Editar /opt/apigee/customer/application/portal.properties para configurar la siguiente propiedad. Si no existe ese archivo, créalo:
    baas.portal.config.overrideUrl=https://stackIP:port

    Especifica como valor de esta propiedad la dirección IP o el nombre y el puerto de DNS del nodo de la pila de APIs de la instalación de un solo nodo, o del balanceador de cargas si tiene un balanceador de cargas al frente del los nodos de la pila de BaaS de la API.
  3. Configura el nodo del portal:
    > /opt/apigee/apigee-service/bin/apigee-service configura baas-portal
  4. Reinicia el portal con el comando:
    > /opt/apigee/apigee-service/bin/apigee-service a reiniciar baas-portal
  5. Si usaste un certificado autofirmado cuando configuraste el acceso TLS a la pila arriba, es posible que el navegador no permita solicitudes a la pila desde el portal. Si ves un error en el navegador que indica que no se permite el acceso HTTPS a la pila, solicita lo siguiente: en tu navegador y agrega una excepción de seguridad para permitir el acceso:
    https://stackIP:port/status

    Especifica la dirección IP o el nombre y puerto de DNS del nodo de la pila de APIs o del balanceador de cargas.

Configura TLS en el portal de BaaS de la API

De forma predeterminada, los usuarios acceden al portal a través de solicitudes HTTP sin encriptar a través del puerto 9000 en el Servidor del portal Puedes configurar el portal para que use HTTPS y encripte los datos que se envían y se envían portal.

De forma predeterminada, accedes al Portal a través de HTTP mediante la dirección IP o el nombre de DNS del Portal. y el puerto 9000. Por ejemplo:

http://portal_IP:9000

Como alternativa, puedes configurar el acceso TLS al portal para que puedas acceder a él en el formulario:

https://portal_IP:9443

En este ejemplo, se configura el acceso TLS para usar el puerto 9443. Sin embargo, el puerto 9443 no es obligatorio. puedes configurar el Portal para que utilice un puerto diferente.

El portal solo puede admitir un tipo de solicitud (HTTP o HTTPS) a través de un solo puerto. Por lo tanto, si configuras el acceso HTTPS en el puerto 9000, no puedes usar HTTP para acceder al puerto 9000. Si configurar el portal para que use el puerto 9443 con HTTPS; entonces, el portal ya no escuchará en el puerto 9,000.

Si deseas configurar TLS para el portal, haz lo siguiente:

  1. Crea un archivo de claves y un archivo de certificado en formato PEM.
    Nota: Asegúrate de que la clave o el certificado no tengan contraseñas ni frases de contraseña.
  2. Copiar los archivos PEM a un directorio en el nodo del portal, como /opt/apigee/customer/application. El directorio debe ser accesible para el cliente usuario.
  3. Cambiar la propiedad de los archivos PEM al permiso de Apigee usuario:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Edita /opt/apigee/customer/application/portal.properties para establecer las siguientes propiedades. Si ese archivo no existe, créalo:
    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
    # De forma predeterminada, el acceso TLS usa el puerto 9000.
    # Usa esta propiedad para especificar un puerto diferente.
    # baas.portal.listen=9000


    Usa baas.portal.ssl.protocols para configurar los protocolos TLS que admite el Portal. Para obtener una lista de los protocolos admitidos, consulta la Lista de nombres de protocolos SSL definidos por Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Configura el nodo del portal:
    > /opt/apigee/apigee-service/bin/apigee-service configura baas-portal
  6. Reinicia el portal:
    > /opt/apigee/apigee-service/bin/apigee-service reinicio de baas-portal
  7. Usa el procedimiento que aparece a continuación en "Configura nodos de pila de BaaS de APIs para TLS en la pila o el portal" para asegurarte de que el nodo de la pila tenga la URL de TLS correcta para el portal.

Configura nodos de BaaS de la API para TLS en la Pila o portal

Si incluyes un balanceador de cargas frente a los nodos de la pila o del portal, o si habilitas TLS directamente en el nodo del portal o de la pila, debes configurar los nodos con las URLs correctas para acceder a Stack y Portal. Por ejemplo, los nodos de pila requieren esta información en los siguientes casos:

  • Incluir una URL en las respuestas de las solicitudes a la API de BaaS.
  • Agregar vínculos en las plantillas de correo electrónico cuando restablezcas una contraseña o envíes otro notificaciones.
  • Redireccionar a los usuarios a páginas específicas del Portal

Si usas un balanceador de cargas frente a los nodos de la pila o configuras TLS en el nodo de la pila, establece la siguiente propiedad en /opt/apigee/customer/application/usergrid.properties:

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

Reemplaza http://localhost:8080 por la URL de la carga. del balanceador de cargas. Si el balanceador de cargas está configurado para usar TLS, usa el protocolo HTTPS. Solo debes deberás incluir el puerto si usas un puerto no estándar, es decir, 80 para HTTP y el puerto 443 para HTTPS.

También debe configurar la siguiente propiedad en /opt/apigee/customer/application/portal.properties si se usa un balanceador de cargas frente a los nodos de pila:

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

Reemplaza http://localhost:8080 por la URL de de cargas HTTP(S) para la pila.

Si usas un balanceador de cargas frente al nodo del portal o configuras TLS en el nodo de pila, establece las siguientes propiedades en usergrid.properties:

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

Reemplaza http://localhost:9000 por la URL de balanceador de cargas HTTP(S) global externo. Si el balanceador de cargas está configurado para usar TLS, usa el protocolo HTTPS. Tú solo necesitarás incluir el puerto si estás usando un puerto no estándar, es decir, el puerto 80 para HTTP y el puerto 443 para HTTPS.

Después de editar usergrid.properties, haz lo siguiente:

  1. Configura el nodo de pila:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Reinicia la pila de BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Si modificaste portal.properties, configura el nodo del portal:
    > /opt/apigee/apigee-service/bin/apigee-service configuración de baas-portal
  4. Reinicia el portal de BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service reinicio de baas-portal