Edge para la nube privada v. 4.16.09
La TLS (seguridad de la capa de transporte, cuyo predecesor es SSL) es la tecnología de seguridad estándar para garantizar una mensajería encriptada y segura en todo el entorno de la API. Puedes configurar TLS en los nodos del portal de BaaS de la API y de la pila de BaaS de la API.
En la siguiente imagen, se muestra un diagrama de implementación típico de la BaaS de API con un solo nodo de BaaS Portal y tres nodos de API BaaS Stack.
Los desarrolladores usan un navegador para realizar solicitudes al portal. De forma predeterminada, las solicitudes usan el protocolo HTTP 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 esta configuración, el portal realiza solicitudes HTTP al balanceador de cargas, que luego reenvía las solicitudes a uno de los nodos de la pila. Este es el entorno de implementación recomendado para un sistema de producción.
Opciones de configuración de TLS
Cuando configures TLS para la BaaS de la API, tendrás 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 el portal que se ejecuta en el navegador usa HTTPS para realizar solicitudes a los nodos de pila a través 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 Stack
Para mayor seguridad, configura el balanceador de cargas para que use TLS para acceder a los nodos de Stack. - 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 un nodo de pila, lo que significa que no es necesario incluir un balanceador de cargas. En esta configuración, configura TLS en el portal y en los nodos de 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 esa configuración, puedes configurar TLS en el balanceador de cargas y, de manera opcional, en la conexión entre el balanceador de cargas y el portal.
Asegúrate de que el puerto TLS esté abierto
En los siguientes procedimientos, se configura TLS en el puerto predeterminado del portal 9000 y el nodo de pila 8080. Sin embargo, puedes cambiar este puerto si lo deseas.
Independientemente del puerto que uses, debes asegurarte de que esté abierto en el nodo. 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 Stack y el puerto 8080. Por ejemplo:
http://stack_IP:8080
Como alternativa, puedes configurar el acceso a TLS a la API de BaaS para poder acceder a ella de la siguiente manera:
https://stack_IP:8080
En este ejemplo, configuras el acceso de TLS para usar el puerto 8080. Sin embargo, el puerto 8080 no es obligatorio; puedes configurar la pila para que use un puerto diferente. El único requisito es que tu firewall permita 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 configuras la pila para que use el puerto 8443 con HTTPS, la pila ya no escuchará en el puerto 8080.
Usa el siguiente procedimiento para configurar el acceso TLS a la pila:
- Genera el archivo JKS del almacén de claves que contiene tu certificación TLS y clave privada. Para obtener más información, consulta Configura TLS/SSL para Edge On Premises.
Nota: Asegúrate de que la contraseña del almacén de claves y de la clave sean iguales. - Copia el archivo JKS del almacén de claves en un directorio del nodo de pila, como /opt/apigee/customer/application. El usuario de Apigee debe poder acceder al directorio.
- Cambia la propiedad del archivo JKS al usuario "apigee":
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
donde keystore.jks es el nombre de tu archivo de almacén de claves. - Edita el archivo /opt/apigee/customer/application/usergrid.properties para configurar las siguientes propiedades, incluida la ruta de acceso al archivo JKS y la contraseña del almacén de claves y la clave. Si ese archivo no existe, 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 password debe estar en texto simple. Por lo tanto, debes proteger usergrid.properties del acceso no autorizado.
Usa la propiedad tomcat-server_keyalias para especificar el alias del almacén de claves. Estableces el alias de la clave cuando la creas. Por ejemplo, puedes establecerlo mediante la opción -alias para el comando keytool.
Usa tomcat-server_ssl.protocols para establecer 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. - Configura el nodo de pila:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Implementa los cambios en Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Reinicia la pila de BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Para confirmar que TLS funcione, ejecuta el siguiente comando cURL en el nodo de Stack con HTTPS:
> curl -k https://localhost:8080/status -v
Si TLS está configurado correctamente, deberías ver una respuesta que contenga información de estado.
Si configuraste el acceso a TLS a través de un puerto que no sea 8080, modifica el comando anterior para usar el puerto correcto. - Repite el proceso en todos los nodos de Stack.
- Si tienes un balanceador de cargas frente a los nodos de Stack, configúralo para que realice solicitudes a los nodos de Stack a través de HTTPS. Consulta la documentación de tu
balanceador de cargas para obtener más información.
Si el portal realiza solicitudes directas a la pila, configúralo para que acceda a la pila a través de HTTPS, como se describe en la siguiente sección. - Usa el siguiente procedimiento en "Configura nodos de la pila de BaaS de la API para TLS en la pila o el portal" para asegurarte de que el nodo de la pila tenga las URLs de TLS correctas cuando se generen respuestas del usuario.
Configura el portal para acceder a la pila a través de TLS
El portal de BaaS que se ejecuta en un navegador funciona realizando llamadas a la API de la pila de BaaS. Si configuras la pila de BaaS para usar TLS, también debes configurar el portal para que realice esas llamadas a través de HTTPS.
Por lo general, una instalación de BaaS de API se configura para lo siguiente:
- Usa un balanceador de cargas entre los nodos del portal y de la pila
Configura el balanceador de cargas para que realice solicitudes a los nodos de la pila a través de HTTPS. Consulta la documentación de 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 la configuración del balanceador de cargas. Si el balanceador de cargas usa TLS, usa el siguiente procedimiento para configurar el portal a fin de realizar solicitudes al balanceador de cargas de HTTPS. - Haz que el portal realice solicitudes directas a la pila
Configura el portal para que acceda 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:
- Configura el acceso a TLS en la pila de BaaS como se describió anteriormente o en el balanceador de cargas de los nodos de la pila como se describe en la documentación de tu balanceador de cargas.
- Edita /opt/apigee/customer/application/portal.properties para establecer la siguiente propiedad. Si ese archivo no existe, créalo:
baas.portal.config.overrideUrl=https://stackIP:port
Como valor de esta propiedad, especifica la dirección IP o el nombre de DNS y el puerto del nodo de API Stack para una instalación de un solo nodo, o bien del balanceador de cargas si tienes uno frente a los nodos de API BaaS Stack. - Configura el nodo del portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Reinicia el portal con el siguiente comando:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Si usaste un certificado autofirmado cuando configuraste el acceso de TLS a la pila anterior, es posible que tu 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 la siguiente URL 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 de DNS y el puerto del nodo de la pila de API o del balanceador de cargas.
Configura TLS en el portal de BaaS de la API
De forma predeterminada, los usuarios acceden al portal mediante solicitudes HTTP sin encriptar a través del puerto 9000 en el servidor del portal. Puedes configurar el portal para que use HTTPS a fin de encriptar los datos que se envían y se envían a él.
De forma predeterminada, accedes al portal a través de HTTP con la dirección IP o el nombre de DNS del nodo del portal y el puerto 9000. Por ejemplo:
http://portal_IP:9000
Como alternativa, puedes configurar el acceso a TLS al portal para poder acceder a él de la siguiente manera:
https://portal_IP:9443
En este ejemplo, se configura el acceso TLS para usar el puerto 9443. Sin embargo, el puerto 9443 no es necesario; puedes configurar el portal para que use un puerto diferente.
El portal 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 9000, no puedes usar HTTP para acceder al puerto 9000. Si configuras el portal para que use el puerto 9443 con HTTPS, el portal ya no escuchará en el puerto 9000.
Para configurar TLS para el portal, sigue estos pasos:
- Crea un archivo de clave y un archivo de certificado en formato PEM.
Nota: Asegúrate de que no haya contraseñas ni frases de contraseña en la clave o el certificado. - Copia los archivos PEM en un directorio del nodo del portal, como /opt/apigee/customer/application. El usuario "apigee" debe poder acceder al directorio.
- Cambia la propiedad de los archivos PEM al usuario "apigee":
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - Edita el archivo /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 a TLS usa el puerto 9000.
# Usa esta propiedad para especificar un puerto diferente.
# baas.portal.listen=9000
Usa baas.portal.ssl.protocols para establecer 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. - Configura el nodo del portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Implementa la configuración:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Reinicia el portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Usa el siguiente procedimiento en "Configura nodos de API BaaS Stack para TLS en la pila o el portal" para asegurarte de que el nodo de Stack tenga la URL de TLS correcta para el portal.
Configura nodos de BaaS de API para TLS en la pila o el 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 la pila y al 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 plantillas de correo electrónico cuando se restablece una contraseña o se envían otras notificaciones
- Redirecciona a los usuarios a páginas específicas del portal.
Si usas un balanceador de cargas frente a los nodos de Stack o configuras TLS en el nodo de Stack, establece las siguientes propiedades en /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_swagger.basepath=http://localhost:8080 usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
Reemplaza http://localhost:8080 por la URL del balanceador de cargas. Si el balanceador de cargas está configurado para usar TLS, usa el protocolo HTTPS. Solo debes incluir el puerto si usas uno no estándar, es decir, distinto del puerto 80 para HTTP y el puerto 443 para HTTPS.
También debes configurar la siguiente propiedad en /opt/apigee/customer/application/portal.properties si usas un balanceador de cargas frente a los nodos de Stack:
baas.portal.config.overrideUrl=http://localhost:8080
Reemplaza http://localhost:8080 por la URL del equilibrador de cargas de la pila.
Si usas un balanceador de cargas frente al nodo de Portal o configuras TLS en el nodo de Stack, establece las siguientes propiedades en usergrid.properties:
usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000
Reemplaza http://localhost:9000 por la URL del balanceador de cargas. Si el balanceador de cargas está configurado para usar TLS, usa el protocolo HTTPS. Solo debes incluir el puerto si usas uno no estándar, es decir, distinto del puerto 80 para HTTP y el puerto 443 para HTTPS.
Después de editar usergrid.properties, haz lo siguiente:
- Configura el nodo de pila:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Implementa los cambios en Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Reinicia la pila de BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Si modificaste portal.properties, configura el nodo del portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Implementa los cambios:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Reinicia el portal de BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart