La compatibilidad con SSL de App Engine ofrece puntos finales SSL distribuidos en todo el mundo y balanceo de carga integrado para servir tu aplicación de forma segura, fiable y rápida a una audiencia mundial.
De forma predeterminada, las conexiones HTTPS de tu dominio personalizado se habilitan automáticamente mediante certificados SSL gestionados. Después de asignar un dominio personalizado a tu aplicación y actualizar los registros DNS, App Engine proporciona un certificado SSL gestionado, lo renueva y lo revoca cuando eliminas el dominio personalizado de tu aplicación.
Antes de empezar
Asegúrate de haber configurado tu dominio personalizado en tu proyecto de App Engine.
Si usas Cloud Load Balancing y NEGs sin servidor para enrutar el tráfico a tu aplicación de App Engine, te recomendamos que asignes tu dominio personalizado al balanceador de carga en lugar de directamente a tu aplicación y que uses certificados SSL creados para el balanceador de carga. De esta forma, no es necesario gestionar certificados SSL independientes para cada aplicación sin servidor. Además, con Cloud Load Balancing puedes definir políticas de SSL que controlen las funciones de SSL que tu balanceador de carga negocia con los clientes. Para obtener más información, consulta las siguientes páginas:
Ten en cuenta la siguiente limitación:
- Te recomendamos que uses controles de entrada para que tu aplicación solo reciba solicitudes enviadas desde el balanceador de carga (y la VPC, si la usas). De lo contrario, los usuarios podrán usar la URL de App Engine de tu aplicación para saltarse el balanceador de carga, las políticas de seguridad de Cloud Armor, los certificados SSL y las claves privadas que se transfieren a través del balanceador de carga.
Verificar un certificado gestionado
Después de configurar tu dominio personalizado y actualizar los registros DNS, se te proporcionará automáticamente un certificado SSL gestionado en unos minutos. La selección de la autoridad de certificación es automática. El certificado gestionado está firmado por Google Trust Services (GTS) o Let's Encrypt.
Para verificar que se ha aprovisionado el certificado, sigue estos pasos:
-
En la Google Cloud consola, ve a App Engine > Configuración > Dominios personalizados:
-
La seguridad SSL se muestra como gestionada por Google.
Solucionar problemas de certificados SSL gestionados
Es posible que tengas que actualizar los registros DNS de tu dominio personalizado para verificar tu nombre de dominio. App Engine no puede aprovisionar certificados para dominios no verificados.
Puede consultar el estado de su certificado con la API Admin mediante una solicitud AuthorizedCertificate.GET.
Si no se ha proporcionado un certificado gestionado porque los registros DNS no están disponibles, el campo
ManagedCertificate.ManagementStatus
puede serFAILED_RETRYING_NOT_VISIBLE
. Comprueba que tus registros DNS estén actualizados, espera unos minutos y vuelve a intentarlo. Los registros DNS pueden tardar hasta 24 horas en estar disponibles.Si el estado es
FAILED_PERMANENT
, significa que no se ha podido renovar el servicio. Comprueba la configuración de DNS y, a continuación, actualiza la asignación de tu dominio personalizado siguiendo los pasos para cambiar a certificados SSL gestionados.
Cambiar a certificados SSL gestionados
Antes de cambiar a certificados SSL gestionados por Google, ten en cuenta que los certificados gestionados no admiten asignaciones comodín.
Si usas subdominios y Let's Encrypt emite el certificado, hay un límite de 50 certificados gestionados por semana para cada dominio base. Si alcanzas el límite, App Engine seguirá intentando emitir certificados gestionados hasta que se hayan completado todas las solicitudes.
Para cambiar de tus propios certificados SSL a certificados SSL gestionados por Google o para añadir certificados SSL gestionados a una aplicación que ya tenga un dominio personalizado, actualiza la asignación de tu dominio:
-
En la Google Cloud consola, ve a App Engine > Configuración > Dominios personalizados:
-
Selecciona el dominio que quieras proteger y haz clic en Habilitar seguridad gestionada.
Inhabilitar los certificados SSL gestionados
Para inhabilitar los certificados SSL gestionados, sigue estos pasos:
-
En la Google Cloud consola, ve a App Engine > Configuración > Dominios personalizados:
-
Selecciona el dominio y haz clic en Inhabilitar seguridad gestionada.
Usar tus propios certificados SSL
En lugar de usar certificados SSL gestionados, puedes usar tu propio certificado. Si tu certificado no tiene una prueba de transparencia, es posible que tu aplicación muestre advertencias de SSL en Chrome debido a la obligación de incluir pruebas de transparencia de certificados. Para obtener más información sobre las pruebas de transparencia de los certificados y cómo cumplir los requisitos, consulta el artículo Implementación obligatoria de la transparencia en los certificados.
Para usar y gestionar tus propios certificados SSL en lugar de los certificados gestionados por Google, sigue estos pasos:
Asegúrate de haber configurado tu dominio personalizado en tu proyecto de App Engine.
Inhabilita los certificados gestionados por Google predeterminados.
Obtén un certificado para tu dominio de la autoridad de certificación (CA) que elijas. El procedimiento exacto puede variar en función de la autoridad, pero consulta los pasos habituales para obtener un certificado.
Convierte los archivos de clave privada y certificado SSL a formatos compatibles con App Engine. Antes de subir los archivos, tu clave privada debe convertirse en una clave privada RSA y tus certificados SSL deben concatenarse en un único archivo. Para obtener más información, consulta el artículo Convertir las claves privadas y concatenar los certificados SSL.
Asegúrate de que tienes los permisos adecuados en la Google Cloud consola y de que has verificado la propiedad (paso 3) de todos los dominios relacionados o de sus dominios principales. Por ejemplo:
- Si el certificado es de
www.example.com
, puedes verificar la propiedad dewww.example.com
o deexample.com
. - Si el certificado es para
www.example.com
ysub.example.com
, puede verificar la propiedad dewww.example.com
ysub.example.com
, o deexample.com
. - Si el certificado es para
*.example.com
, debes verificar la propiedad deexample.com
.
- Si el certificado es de
Sube tu clave privada y tu certificado SSL y, a continuación, asigna tu dominio a tu aplicación:
-
En la Google Cloud consola, ve a App Engine > Configuración > Certificados SSL:
-
Haz clic en Subir un nuevo certificado.
-
Sube tu certificado SSL concatenado en
PEM encoded X.509 public key certificate
, por ejemplo,concat.crt
. A continuación, sube tu clave privada RSA en Clave privada RSA codificada en PEM sin cifrar, por ejemplo,myserver.key.pem
. - Haz clic en Subir. Todos los certificados SSL que subas estarán visibles y disponibles para todos tus demás Google Cloud proyectos, por lo que no tendrás que subir el mismo certificado varias veces.
- Selecciona el certificado que quieras asignar a un dominio y, a continuación, haz clic en Guardar para usar SSL en ese dominio.
-
Para probar los cambios, visita tu dominio en el navegador. Por ejemplo, usa
https
https://www.example.com
.
Transferir asignaciones de un certificado de servicio a un certificado nuevo
Cuando un certificado se acerque a su fecha de vencimiento, tendrás que subir un certificado nuevo y transferir las asignaciones del certificado antiguo al nuevo. En el siguiente procedimiento se presupone que el certificado aún no ha caducado y que se está usando en tu dominio personalizado.
Para transferir asignaciones de un certificado activo, sigue estos pasos:
Obtén un nuevo certificado para tu dominio de la autoridad de certificación (CA) que elijas. Consulta los pasos habituales para obtener un certificado.
Convierte los archivos de clave privada y certificado SSL a formatos compatibles con App Engine. Para obtener más información, consulta el artículo Convertir las claves privadas y concatenar los certificados SSL.
Sube tu clave privada RSA y tu certificado SSL concatenado:
-
Sube el certificado SSL en la página Certificados SSL.
Ve a Certificados SSL.-
Haz clic en Subir un nuevo certificado.
-
Sube tu certificado SSL concatenado en Certificado de clave pública X.509 codificado en PEM, por ejemplo,
concat.crt
. A continuación, sube tu clave privada RSA en Clave privada RSA codificada en PEM sin cifrar, por ejemplo,myserver.key.pem
. - Haz clic en Subir.
-
- Selecciona el certificado que acabas de añadir en la lista de certificados. A continuación, selecciona el dominio al que sirve el certificado antiguo.
- Haz clic en Guardar para transferir las asignaciones del certificado antiguo al nuevo.
-
Obtener un certificado
El proceso para obtener un certificado SSL variará en función de la autoridad de certificación que utilices. Es posible que tengas que ajustar ligeramente las instrucciones que se indican aquí. Normalmente, cada autoridad de certificación proporciona instrucciones para ayudarte durante el proceso.
Para obtener un certificado que puedas usar con tu aplicación de App Engine, sigue estos pasos:
Genera tu clave privada y una solicitud de firma de certificado (CSR) con la herramienta openssl:
Ejecuta el siguiente comando desde el directorio en el que quieras crear el archivo
server.csr
:openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csr
donde:
[MY_PRIVATE_KEY].key
es el archivo generado en el que se almacena tu clave privada. Ejemplo:myserver.key
[MY_CSR].csr
es el archivo generado para tu solicitud de firma de certificado. Ejemplo:server.csr
Cuando se te solicite, introduce la siguiente información:
- El código de país de dos dígitos (por ejemplo,
US
para Estados Unidos). - El nombre de tu ciudad.
- El nombre de tu empresa. Puedes usar tu propio nombre si no tienes una empresa.
- Tu unidad organizativa o
NA
si no tienes ninguna. - Un nombre común que represente tu dominio. Por ejemplo:
www.example.com
- Tu dirección de correo electrónico.
No es necesario que proporcione ninguno de los demás valores, ya que son opcionales.
- El código de país de dos dígitos (por ejemplo,
Determina qué autoridad de certificación te conviene y compra un certificado. Por ejemplo, puedes usar: SSLMate, Thawte, Comodo o cualquier otra autoridad de certificación.
Para obtener información sobre los tipos de certificados admitidos, consulta Compatibilidad de App Engine con certificados SSL.
Cuando la CA solicite el contenido del archivo CSR, siga sus instrucciones para copiar y pegar el contenido del archivo
.csr
que ha generado anteriormente (por ejemplo,server.csr
).Sigue las instrucciones cuando tu CA solicite la aprobación del propietario del dominio.
Una vez que hayas aprobado la propiedad del dominio, la CA te enviará el certificado, que normalmente es un archivo ZIP. Descomprime ese archivo en un directorio de trabajo para poder concatenar esos certificados y subirlos a App Engine.
Convertir claves privadas y concatenar certificados SSL
Debes convertir tu clave privada en una clave privada RSA y concatenar todos tus certificados SSL antes de subir tu clave privada y tus certificados SSL a App Engine.
Convierte el archivo de clave privada que has generado anteriormente en una clave privada RSA sin cifrar. Por ejemplo, puedes ejecutar el siguiente comando
openssl rsa
:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
donde:
[MY_PRIVATE_KEY].key
es el archivo generado que contiene tu clave privada. Ejemplo:myserver.key
[MY_RSA_KEY].key
es el archivo generado que contiene la clave privada RSA sin cifrar. Ejemplo:myserver.key.pem
Ejemplo:
openssl rsa -in myserver.key -out myserver.key.pem
Concatena todos los archivos
.crt
de tu CA en un solo archivo con el siguiente comando:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crt
donde
[MY_DOMAIN_CERT].crt
es el certificado de tu dominio. Ejemplo:www_example_com.crt
[MY_SecureServerCA].crt
,[MY_TrustCA].crt
y[MY_TrustExternalCARoot].crt
son los otros archivos de certificado que proporciona tu AC.[MY_CONCAT_CERT].crt
es el archivo concatenado que contiene todos los archivos de certificado.crt
de tu AC. Ejemplo:concat.crt
Ejemplo:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
Verifica tu certificado SSL y tu clave privada:
Para verificar que la clave privada y el certificado coinciden, puedes usar los comandos
openssl x509
yopenssl rsa
. Ejemplos:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
Los comandos openssl x509 y openssl rsa deberían devolver el mismo resultado.
Para verificar que un certificado y su cadena de CA son válidos, puedes usar el comando openssl verify. Por ejemplo:
openssl verify -verbose -CAfile concat.crt concat.crt
Cuando lo tengas todo listo, puedes subir tu clave privada RSA y los certificados concatenados a App Engine.
Compatibilidad de App Engine con certificados SSL
App Engine admite los siguientes tipos de certificados:
- Un único dominio o nombre de host
- Autofirmado
- Carácter comodín
- Nombre alternativo de la entidad (SAN) o multidominio
Para ello, se deben cumplir ciertos requisitos en cuanto a los certificados y las claves:
- La clave privada y el certificado deben subirse en formato PEM.
- Las claves privadas no deben cifrarse.
- Un archivo de certificado puede contener como máximo cinco certificados, incluidos los certificados encadenados y los intermedios.
- Todos los nombres de asunto del certificado de host deben coincidir con los dominios verificados del usuario o ser subdominios de estos.
- Las claves privadas deben usar el cifrado RSA.
- Módulo de clave máximo permitido: 2048 bits
Si el certificado de host requiere un certificado intermedio o encadenado, como emiten muchas autoridades de certificación (CAs), debes añadir los certificados intermedios o encadenados al final del archivo de certificado público.
Algunas funciones de App Engine usan subdominios especiales. Por ejemplo, una aplicación puede usar subdominios para dirigirse a los servicios de la aplicación o a diferentes versiones de la aplicación. Para usarlos con SSL, es recomendable configurar un certificado SAN o comodín. Los certificados comodín solo admiten un nivel de subdominio.
Quitar certificados SSL personalizados
Para dejar de usar un certificado SSL personalizado, sigue estos pasos:
En la Google Cloud consola, ve a la página Configuración de certificados SSL de App Engine.
Haz clic en el certificado que quieras quitar de tu dominio.
Desmarca el nombre de dominio para el que ya no quieras usar el certificado SSL y, a continuación, haz clic en Guardar.
Usar encabezados Strict-Transport-Security
Por motivos de seguridad, todas las aplicaciones deben animar a los clientes a usar conexiones https
. Para indicar al navegador que prefiera https
a http
,
usa el encabezado Strict-Transport-Security
.
Ver las versiones y los cifrados de TLS habilitados
Instala
nmap
Network Mapper en tu ordenador si aún no está disponible. Consulta las instrucciones de instalación en https://nmap.org/.Para ver qué versiones de TLS y qué cifrados están habilitados en tu aplicación, introduce el siguiente comando:
nmap -sV --script ssl-enum-ciphers -p 443 HOSTNAME
Sustituye
HOSTNAME
por el nombre de host de tu aplicación. Puedes usar tu dominio personalizado o el nombre de hostappspot.com
que App Engine ha creado para tu aplicación. Por ejemplo:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
Inhabilitar versiones y cifrados de TLS
Si usas Cloud Load Balancing y NEGs sin servidor para enrutar el tráfico a tu aplicación de App Engine, puedes inhabilitar una versión de TLS o un cifrado definiendo una política de seguridad SSL que especifique qué versiones de TLS y cifrados se pueden usar para las conexiones HTTPS o SSL.