Ejemplo sobre cómo obtener certificados TLS

Este tema solo es un ejemplo. En él se explica cómo obtener un certificado TLS de la autoridad de certificación (CA) Let's Encrypt. Estos pasos se proporcionan principalmente como ejemplo a seguir si no tienes otra forma de obtener un par de certificado y clave autorizado por una autoridad de certificación. En el ejemplo se muestra cómo generar certificados con la CA Let's Encrypt, el cliente Certbot y Cloud DNS de Google Cloud Platform.

Dónde puedes usar estos certificados

Debes proporcionar certificados TLS para las pasarelas de entrada de Runtime expuestas fuera del clúster.

Consulta también Conexiones externas.

Requisitos

Necesitarás un nombre de dominio obtenido a través de un registrador de nombres de dominio. Puedes registrar un nombre de dominio a través de Google Domains u otro registrador de dominios que prefieras.

Configurar Cloud DNS

Para obtener certificados TLS autorizados, debes tener un nombre de dominio cualificado. En los siguientes pasos se explica cómo usar Google Cloud DNS para obtener un nombre de dominio y gestionar los servidores de tu dominio.
  1. Abre la consola de Google Cloud e inicia sesión en tu cuenta.
  2. Selecciona el proyecto en el que está instalado Apigee Hybrid.
  3. Si aún no lo has hecho, habilita la API Cloud DNS. Consulta Habilitar APIs.
  4. Para crear una dirección IP estática, sigue estos pasos:
    • Si usas GKE, sigue las instrucciones de Configurar direcciones IP externas estáticas para crear direcciones IP estáticas que los procesos externos puedan usar para comunicarse con el ingress del runtime híbrido. Puede asignar el nombre que quiera a la dirección, por ejemplo, apigee-hybrid-runtime. Cuando termines, utilizarás el número de IP en la configuración del clúster en el siguiente paso. Por ejemplo: 34.66.75.196
    • Si usas Google Distributed Cloud, sigue las instrucciones de los artículos Planificar direcciones IP y Crear un clúster de usuario para crear una dirección IP estática.
  5. Obtén la IP externa que acabas de reservar.
  6. Crea un conjunto de registros para el endpoint de entrada de Istio del tiempo de ejecución. Esta es la dirección para hacer llamadas a la API de la pasarela híbrida. Introduce la IP externa que has obtenido en el paso anterior y añade un prefijo al nombre de dominio, como example-endpoint. Para obtener instrucciones, consulta Crear un registro.
    1. Crea una zona pública gestionada. Para obtener instrucciones, consulta el artículo Crear una zona pública gestionada.
    2. Crea un conjunto de registros con los siguientes datos:
      • Nombre de DNS: el nombre del endpoint con el que se comunicarán las llamadas a la API externa, como api-services o example-endpoint.
      • Tipo de registro de recurso: A
      • TTL y Unidad TTL: acepta los valores predeterminados.
      • Dirección IP: la IP estática que has creado.
  7. En la vista Detalles de zona se mostrarán cuatro servidores DNS como datos NS de la nueva zona. Copia los datos del registro DNS, tal como se muestra en el siguiente ejemplo:

  8. Vuelve a la página de tu dominio en tu registrador (por ejemplo, Google Domains).
  9. Selecciona tu dominio.
  10. Selecciona DNS.
  11. En la sección Servidores de nombres, haz clic en Editar.
  12. Introduce los servidores de nombres de dominio que has copiado de la página Servicios de red > Cloud DNS. Por ejemplo:

Ahora, Google Cloud DNS gestionará los registros DNS de tu dominio.

Instalar Certbot en una máquina virtual

Ahora que has configurado Cloud DNS para gestionar los servidores de tu dominio, instalarás el cliente Certbot con el complemento dns_google en una VM de Cloud. El cliente te permite obtener certificados autorizados para tu dominio desde un endpoint de Let's Encrypt.

  1. Abre la consola de Google Cloud e inicia sesión con la cuenta que creaste en el paso 1: Crea una cuenta de Google Cloud.
  2. Selecciona el proyecto que has creado en el paso 2: Crea un proyecto de Google Cloud.
  3. Selecciona IAM y administración > Cuentas de servicio.

    En la vista Cuentas de servicio se muestra una lista de las cuentas de servicio del proyecto.

  4. Para crear una cuenta de servicio, haz clic en +Crear cuenta de servicio en la parte superior de la vista.

    Se muestra la vista Detalles de la cuenta de servicio.

  5. En el campo Nombre de cuenta de servicio, introduce el nombre de la cuenta de servicio.

    También puedes añadir una descripción en el campo Descripción de la cuenta de servicio. Las descripciones te ayudan a recordar para qué se usa una cuenta de servicio concreta.

  6. Haz clic en Crear.

    Google Cloud crea una cuenta de servicio y muestra la vista Permisos de la cuenta de servicio. Usa esta vista para asignar un rol a la nueva cuenta de servicio.

  7. Haz clic en la lista desplegable Seleccionar un rol.
  8. Selecciona el rol Propietario del proyecto.
  9. Haz clic en Continuar.
  10. Haz clic en Listo.
  11. En la Google Cloud consola, selecciona Compute Engine > Instancias de VM.
  12. Crea una instancia de VM llamada certmanager.
  13. En la sección Disco de arranque, elige CentOS7 y 20 GB para el disco persistente SSD.
  14. Asigna a la cuenta de servicio la que has creado más arriba.
  15. Instala Certbot y el complemento dns_google en el equipo y ejecuta el cliente de Certbot:
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Por ejemplo:

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
  16. Ahora puedes encontrar los archivos de certificado autorizado y clave privada en este directorio: cd /etc/letsencrypt/live/your_domain_name/

    Por ejemplo:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.key  README
  17. Copia los archivos fullchain.pem y privkey.key en tu máquina local.
  18. Opcional: Crea un secreto de Kubernetes con el par de certificado y clave. Consulta las instrucciones de la opción 2: secreto de Kubernetes en el artículo Configurar TLS y mTLS en la entrada de Istio.
  19. Actualiza el archivo de anulaciones para que apunte al certificado y a la clave privada.

    Por ejemplo:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.key"

    O bien, si usas secretos de Kubernetes:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        tlsMode: SIMPLE  # Note: SIMPLE is the default, MUTUAL is also an available value.
        sslSecret: myorg-test-policy-secret"
    
    ...  
  20. Aplica los cambios a la configuración de envs:

    Ejecuta helm upgrade para cada entorno que quieras actualizar.

    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
    -f OVERRIDES_FILE.yaml
    
  21. Probar la configuración

    Implementa y prueba un proxy. Consulta la información general sobre cómo crear tu primer proxy de APIs.