IBM Cloud Docs
Cómo trabajar con correlaciones de dominio personalizadas

Cómo trabajar con correlaciones de dominio personalizadas

Las asignaciones de dominio proporcionan la ruta e URL e a su aplicación o función Code Engine dentro de un proyecto. Con Code Engine, estas asignaciones se crean automáticamente, de forma predeterminada, cada vez que implementa una aplicación o crea una función. Sin embargo, puede asignar su propio dominio personalizado a una aplicación o función de Code Engine. Esta opción dirige las solicitudes de su URL personalizado a su aplicación o función. Puede utilizar la consola Code Engine o la CLI.

Si desea establecer como destino la aplicación o función Code Engine con un dominio de su propiedad, puede utilizar una correlación de dominio personalizada. Cuando establece una asignación de dominio personalizada en Code Engine, define una asignación uno a uno entre su nombre de dominio completo (FQDN) y una aplicación o función de Code Engine en su proyecto.

Una correlación de dominio personalizado sólo debe apuntar a una aplicación o función Code Engine. Sin embargo, puede configurar varias correlaciones de dominio para una única aplicación o función.

Para trabajar con correlaciones de dominio personalizadas en Code Engine, realice los pasos siguientes. Tenga en cuenta que algunos pasos se completan fuera de Code Engine.

  1. Revise las Consideraciones antes de utilizar correlaciones de dominio personalizadas en Code Engine.
  2. Obtener el dominio personalizado de un registrador de dominio (fuera de Code Engine).
  3. Configure una asignación de dominio personalizada en Code Engine para su aplicación o función(desde la consola Code Engine o CLI ).
  4. Complete la configuración del dominio personalizado con su registrador de dominios (fuera de Code Engine ).

Después de completar la configuración del dominio personalizado con su registrador de dominios y de configurar una asignación de dominio para su aplicación o función en Code Engine, pruebe la asignación de dominio.

En Code Engine, puede ver, actualizar o suprimir correlaciones de dominio con sus aplicaciones o funciones.

Consideraciones antes de utilizar correlaciones de dominio personalizadas en Code Engine

Antes de implementar correlaciones de dominios personalizadas en Code Engine, tenga en cuenta las consideraciones siguientes:

  • Utilice únicamente asignaciones de dominio personalizadas para dominios protegidos con un certificado SSL/TLS, que firma una autoridad de certificación (CA) pública y de confianza.
  • Puede definir correlaciones de dominio personalizadas que apunten a nombres de dominio público.
  • Si su nombre de dominio solo puede resolverse mediante un sistema de nombres de dominio (DNS) no público, proporcione un certificado que enumere el nombre de dominio y esté firmado por una CA pública y de confianza.
  • Proporcione la cadena de certificados completa, comenzando por el certificado que corresponde al dominio personalizado, seguido de todos los certificados intermedios hasta el certificado raíz.
  • No puede utilizar certificados autofirmados.
  • No puede utilizar certificados firmados por una CA de empresa no de confianza o no pública.
  • El certificado debe tener una fecha de caducidad establecida.

Obtención de un dominio personalizado y su certificado TLS y clave privada

Antes de configurar correlaciones de dominio personalizadas en Code Engine, primero debe obtener el dominio personalizado de un registrador de dominio (fuera de Code Engine).

  1. En un registrador de dominio, obtenga el dominio personalizado; por ejemplo, www.example.com.
  2. Obtenga su certificado SSL/TLS para su dominio personalizado:
    • Puede crear un certificado que no sea autocertificado utilizando el servicio Let's Encrypt y Certbot. Si el dominio personalizado está bajo su control y desea crear rápidamente un certificado, puede utilizar Certbot y los servicios Let's Encrypt para obtener un certificado.

    • Puede obtener un certificado firmado de una autoridad de confianza. Este tipo de certificado digital se utiliza para establecer la privacidad de la comunicación entre un servidor y un cliente. Estos certificados contienen información que se utiliza para crear conexiones seguras y de confianza entre puntos finales. También debe obtener una clave privada coincidente para el certificado TLS.

      Puede obtener su certificado y clave de su CA. Obtenga un certificado SSL/TLS firmado para su dominio personalizado. Por razones de seguridad, Code Engine solo admite asignaciones de dominio personalizadas que estén configuradas con un certificado TLS/SSL firmado por una CA pública y de confianza.

      También puede obtener su certificado y clave en Cloud Internet Services (CIS) solicitando un certificado de origen si la gestión de su dominio personalizado ha sido delegada a CIS. Siguiendo este planteamiento, a continuación se aplica el modo TLS flexible de extremo a extremo.

¿Cómo puedo usar Certbot y el servicio Let's Encrypt para mi dominio personalizado?

En un entorno empresarial, trabaje con el administrador del dominio corporativo para obtener los certificados necesarios. Sin embargo, si el dominio personalizado está bajo su control y desea un certificado rápido, puede utilizar Certbot y el servicio Let's Encrypt para obtener un certificado:

  1. Instale Certbot. Certbot es un cliente para el protocolo Automatic Certificate Management Environment(ACME) para automatizar interacciones entre una CA y un servidor. El servicio Let's Encrypt utiliza este cliente para verificar la propiedad del dominio y emitir certificados. En la documentación de Certbot, seleccione Other como software y seleccione el sistema operativo de su estación de trabajo para obtener la información aplicable para instalar la línea de comandos de Certbot.

  2. Ejecute el siguiente comando para crear su certificado. Este mandato de ejemplo crea un certificado para los dominios personalizados example.com y www.example.com. Asegúrese de actualizar el mandato para su propio dominio personalizado.

    certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com
    
  3. Para verificar que es propietario del dominio, establezca un registro de TXT con el registrador de dominio para los dominios que ha solicitado en el paso anterior con valores que se proporcionaron con la salida de la herramienta Certbot; por ejemplo, _acme_challenge.example.com y _acme_challenge.ww.example.com. Después de establecer el registro TXT, continúe con el mandato Certbot.

  4. Certbot recupera el certificado firmado por Let's Encrypt. La ubicación donde se almacena el certificado la proporciona la salida de Certbot. Busque los archivos fullchain.pem y privkey.pem.

Mandato de ejemplo para ejecutar Certbot en un sistema Ubuntu

sudo certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com

Salida de ejemplo para la solicitud de certificado para example.com y www.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.example.com.
with the following value:
<MASKED>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.www.example.com
with the following value:
<MASKED>
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet. Note that you might be
asked to create multiple distinct TXT records with the same name. This is
permitted by DNS standards.)
Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.www.example.com.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on 2023-02-01.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
 * Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

El certificado está listo.

¿Cómo puedo utilizar un certificado de origen obtenido de mi CIS para mi dominio personalizado?

Si obtiene el certificado y la clave de su CA pública y de confianza, entonces están firmados y son seguros. Usted trabaja con su CA para obtener el certificado SSL/TLS firmado para su dominio personalizado.

También puede utilizar Cloud Internet Services (CIS) para solicitar un certificado de origen y, a continuación, configurar CIS para reenviar las direcciones IP de usuario a su aplicación o función de acuerdo con este flujo:

  1. Pida su certificado de origen:

    1. En la consola IBM Cloud, vaya a la lista de recursos y busque su instancia Internet Services. En los resultados de la búsqueda, haga clic en el nombre de la instancia de destino para ver su página de detalles.
    2. En la página de detalles de la instancia CIS, vaya a la página Origen (Seguridad>Origen ) y haga clic en Ordenar.
    3. En el panel "Solicitar certificado de origen", mantenga todos los valores predeterminados e introduzca el nombre de dominio con el que desea trabajar. Por ejemplo, myapp.example.com. Haga clic en Pedir para confirmar.
    4. Copie los valores del certificado de origen y de la clave privada. Necesitará esta información cuando asigne su dominio.
  2. Configure y aplique el modo TLS flexible de extremo a extremo.

    El certificado de borde lo proporciona CIS. El certificado de origen se utiliza para cifrar únicamente el tráfico entre CIS y la aplicación o función Code Engine.

Una vez creado correctamente su registro DNS en CIS, ha configurado CIS para reenviar las direcciones IP de los usuarios a su aplicación o función.

Configuración de correlaciones de dominios personalizadas en Code Engine

Ahora ya está familiarizado con los conceptos de trabajar con asignaciones de dominios personalizados y ha obtenido su dominio personalizado de un registrador de dominios. Está listo para configurar sus aplicaciones o funciones de Code Engine para utilizar asignaciones de dominio personalizadas. Consulte:

Visualización de correlaciones de dominio

Visualización de correlaciones de dominio desde la consola

Puede ver una lista de todas las correlaciones de dominios personalizadas y generadas automáticamente para la aplicación o función desde la consola. De forma predeterminada, el contenido de la tabla se circunscribe a correlaciones de dominio personalizadas. Utilice el filtro Tipo para modificar la vista.

Esta vista muestra información sobre la caducidad del certificado asociado a la correlación. Cuando caduca el certificado, ya no se puede acceder a la aplicación o función con la correlación de dominio, y esta condición genera un error SSL. Si tiene un certificado que está a punto de caducar, actualice la correlación de dominios personalizada para utilizar un certificado actualizado.

Esta vista también muestra información sobre la aplicación o función específica que está asociada con la correlación de dominio y el tipo de correlación de dominio. Para las asignaciones que genera Code Engine, el tipo puede ser System-public, System-private o System-internal. Para las correlaciones de dominio personalizadas que cree, el tipo es Custom.

  1. Una vez que su proyecto esté en estado Activo, haga clic en el nombre de su proyecto en la página Code Engine Projects.
  2. En la página de resumen, haga clic en Asignaciones de dominio.
  3. Desde la página de asignaciones de dominio, vea una lista de las asignaciones de dominio definidas para sus aplicaciones o funciones existentes. Type indica si la correlación se genera automáticamente o si es una correlación de dominio personalizada.

Visualización de correlaciones de dominio con la CLI

Para ver una lista de todas las correlaciones de dominio personalizadas para las aplicaciones o funciones con la CLI, utilice el mandato ibmcloud ce domainmapping list. Por ejemplo:

ibmcloud ce domainmapping list

Salida de ejemplo

Listing domain mappings...
OK

Name              CNAME                                                        Target  Target-Type  Status  Secret Name  Age
www.example.com   custom.abcdabcdabc.us-south.codeengine.appdomain.cloud       myapp   app          ready   mytlssecret  36m

Para ver un listado de todas las correlaciones de dominio para las aplicaciones o funciones, incluidas las correlaciones de dominio personalizadas que crea y las correlaciones de dominio generadas automáticamente que crea Code Engine, especifique la opción --all con el mandato ibmcloud ce domainmapping list. Las correlaciones de dominio personalizadas muestran un valor para CNAME.

Actualización de correlaciones de dominio

Cuando crea una correlación de dominio personalizada, el secreto TLS es válido hasta que caduca el certificado. En la página de correlación de dominios, puede ver información sobre los días restantes hasta que caduque el certificado.

Es importante saber si el certificado que se utiliza con el dominio personalizado lista varios nombres de dominio, o si utiliza un certificado comodín. Cuando su certificado esté a punto de caducar (o haya caducado), edite el secreto TLS existente para la asignación de dominio con credenciales actualizadas. No cree un secreto TLS diferente con credenciales actualizadas para su mapeo de dominio.

Actualización de una correlación de dominio desde la consola

Supongamos que la correlación de dominio personalizado para www.example.com tiene un certificado que caduca pronto. Puede actualizar la correlación de dominio desde la consola para utilizar un certificado actualizado o incluso sustituir el secreto TLS para la correlación. También puede actualizar la correlación de dominios para que apunte a una aplicación o función diferente en el proyecto.

  1. En la página Code Engine Projects, vaya a su proyecto.
  2. En la página Visión general, pulse Correlaciones de dominio.
  3. En la página Correlaciones de dominio, pulse el icono Acciones Acciones > Editar para editar la correlación. O bien, puede pulsar en la fila del dominio personalizado definido para actualizar la correlación.
  4. Desde el panel "Actualizar una asignación de dominio", puede cambiar la aplicación o función que está asociada con esta asignación de dominio. Como alternativa, puede reemplazar o actualizar el secreto TLS para esta asignación.
  5. Pulse Actualizar para guardar los cambios.

Después de actualizar la asignación, puede ver la lista de asignaciones de dominio para los cambios más recientes.

Actualización de una correlación de dominio con la CLI

Para actualizar una correlación de dominio personalizada, utilice el mandato ibmcloud ce domainmapping update.

Supongamos que la correlación de dominio personalizado para www.example.com tiene un certificado que caduca pronto. Puede actualizar la correlación de dominio para utilizar un certificado actualizado o incluso sustituir el secreto TLS para la correlación con la opción --tls-secret. También puede utilizar la opción " --target " para actualizar la asignación de su dominio para que apunte a una aplicación o función diferente en su proyecto.

El siguiente ejemplo actualiza la asignación de dominio personalizado www.example.com para utilizar un secreto TLS actualizado llamado mytlssecret.

  1. Actualice la información secreta de TLS ( mytlssecret ) con el certificado actualizado y la información de la clave privada, que se encuentran en los archivos mycertchain2.txt y myprivatekey2 en su estación de trabajo local.

    ibmcloud ce secret update --name mytlssecret --cert-chain-file  mycertchain2.txt --private-key-file myprivatekey2.txt
    

    Salida de ejemplo

    Updating secret mytlssecret..
    OK
    
    
  2. Actualice la correlación de dominio para utilizar el secreto TLS actualizado.

    ibmcloud ce domainmapping update --domain-name www.example.com --tls-secret mytlssecret2
    

    Salida de ejemplo

    Getting domain mapping 'www.example.com.org'...
    Updating domain mapping 'www.example.com.org'...
    
    

Supresión de correlaciones de dominio

Cuando suprime una correlación de dominio, está eliminando la asociación de la aplicación o función Code Engine con la correlación de dominio personalizada dentro de Code Engine. Esta acción no suprime la aplicación, función o secreto TLS asociados.

Al eliminar una aplicación o función a la que se hace referencia en una asignación de dominio, también se eliminan las asignaciones de dominio personalizadas asociadas a dicha aplicación o función.

Cuando elimina una asignación de dominio personalizada y la configuración de DNS del dominio permanece, su tráfico sigue siendo dirigido al proyecto Code Engine. Por ejemplo, los puntos CNAME al proyecto Code Engine aún pueden establecerse. Sin embargo, la solicitud se responde con un mensaje de error 404 (no encontrado). Asegúrese de que el registrador de dominio actualice el registro CNAME asociado para el nombre de dominio completo en los valores DNS.

Supresión de correlaciones de dominio de la consola

En la consola, sólo puede suprimir correlaciones de dominio de tipo Custom. Las asignaciones de dominio que genera automáticamente Code Engine no se pueden eliminar.

Para suprimir una correlación de dominio personalizada de la consola,

  1. En la página Code Engine Projects, vaya a su proyecto.
  2. En la página Visión general, pulse Correlaciones de dominio para ver una lista de correlaciones de dominio definidas.
  3. (Opcional) Pulse Tipo para filtrar las correlaciones de dominio por tipo.
  4. En la página Correlaciones de dominio, suprima la correlación de dominio personalizada que desea eliminar de la aplicación o función. Pulse el icono Acciones Acciones > Suprimir para suprimir la correlación.

Supresión de correlaciones de dominio con la CLI

Para suprimir una correlación de dominio personalizado con la CLI, utilice el mandato ibmcloud ce domainmapping delete.

Solo puede eliminar asignaciones de dominio personalizadas; no puede eliminar asignaciones de dominio generadas por Code Engine. Ejecute el mandato ibmcloud ce domainmapping list para visualizar una lista de correlaciones de dominio personalizadas con la CLI. Una correlación de dominio personalizada tiene un registro CNAME generado. En la CLI, puede obtener el valor CNAME generado para una correlación de dominio personalizada especificada utilizando el mandato ibmcloud ce domainmapping get.

ibmcloud ce domainmapping delete --domain-name www.example.com -f

Salida de ejemplo

Deleting domain mapping 'www.example.com'...
OK

Próximos pasos

Obtención del registro CNAME para una asignación de dominio personalizada

Code Engine proporciona el destino CNAME para la correlación de dominio personalizado definida.

Para obtener el registro CNAME de la consola de Code Engine, abra la correlación de dominios personalizada definida y visualice la página Actualizar correlación de dominios. Abra la página Actualizar correlación de dominio de una de las maneras siguientes:

  • En la tabla Correlaciones de dominio, pulse en la fila del dominio personalizado definido.
  • Pulse el icono Acciones Acciones > Editar para editar la correlación.

En la página Actualizar correlaciones de dominio, puede obtener el valor CNAME target. Por ejemplo, la correlación www.example.com tiene el valor CNAME de custom.abcdabcdabc.us-east.codeengine.appdomain.cloud, donde abcdabcdabc es un identificador exclusivo generado automáticamente y us-east es la región del proyecto.

Para obtener el registro CNAME con la CLI, utilice el mandato ibmcloud ce domainmapping get. Por ejemplo:

ibmcloud ce domainmapping get --domain-name www.example.com

Salida de ejemplo

Getting domain mapping 'www.example.com'...
OK

Domain Name:  www.example.com
CNAME:        custom.abcdabcdabc.us-south.codeengine.appdomain.cloud
Target Name:  myapp
Target Type:  app
TLS Secret:   mytlssecret
Status:       ready

Después de tener el destino CNAME, está preparado para añadir la entrada de registro CNAME a los valores DNS del dominio personalizado. Tenga en cuenta que la publicación del registro CNAME con el registrador de dominio puede tardar algún tiempo en rellenar los cambios de DNS en Internet.

Añadir un registro DNS en CIS para dirigir el tráfico a su aplicación Code Engine

Si dispone de una instancia CIS para gestionar su dominio personalizado, actualice los registros DNS para que apunten a su proyecto Code Engine, como se indica a continuación. Tenga en cuenta que para los registradores de dominios que no son CIS, los pasos difieren, pero el objetivo es el mismo: crear un registro DNS con el tipo CNAME, que apunte al punto final CNAME de los proyectos Code Engine:

  1. En la página de detalles de la instancia CIS, vaya a Fiabilidad>DNS. Desplácese hasta Registros DNS y haga clic en Añadir.

  2. En el panel "Añadir registro":

    • Seleccione CNAME como tipo.
    • Configure su subdominio; por ejemplo, myapp.
    • Proporcione el valor de destino CNAME que copió anteriormente, como el nombre de dominio Alias.
    • Compruebe que la salida de detalles para el registro DNS indica que la asignación de su dominio es un alias. Por ejemplo, busque un mensaje similar a: myapp.example.com is an alias of custom.<id>.<region>.codeeng.appdomain.cloud. Haga clic en Añadir para confirmar la adición del registro DNS.

    Si necesita registrar varios dominios y subdominios, como example.com y www.example.com, deberá repetir los pasos para cada subdominio. Puede plantearse crear un único certificado que cubra más de un dominio. Sin embargo, sólo puede utilizar ese único certificado una vez en una región. Si piensas utilizar tus dominios personalizados en más de un proyecto de una misma región, mantenlos separados.

Ahora ya está familiarizado con el trabajo con asignaciones de dominios personalizados y ha obtenido un dominio personalizado con su certificado TLS y su clave privada. Está listo para configurar una asignación de dominio personalizada en Code Engine para su aplicación o función.