Ottenere certificati TLS: esempio

Questo argomento è solo un esempio. Spiega come ottenere un certificato TLS dall'autorità di certificazione Let's Encrypt. Questi passaggi sono forniti principalmente come esempio da seguire se non disponi di un altro modo pronto per ottenere una coppia di certificati/chiavi autorizzata da una CA. L'esempio mostra come generare certificati utilizzando la crittografia Let's, il client Certbot e Cloud DNS di Google Cloud Platform.

Dove puoi utilizzare questi certificati

Devi fornire i certificati TLS per due gateway in entrata Istio esposti all'esterno del cluster:

Gateway Requisiti TLS
Gateway in entrata di runtime Puoi utilizzare una coppia di certificati/chiavi autofirmati o certificati TLS autorizzati.
Gateway in entrata MART (facoltativo quando non utilizzi Apigee Connect) Richiede una coppia di chiavi/certificati TLS autorizzati o un secret di Kubernetes.
Vedi anche Connessioni esterne.

Requisiti

Ti servirà un nome di dominio ottenuto tramite un registrar di nomi di dominio. Puoi registrare un nome di dominio tramite Google Domains o un altro registrar di domini a tua scelta.

Configura Cloud DNS

Per ottenere i certificati TLS autorizzati, devi avere un nome di dominio qualificato. I passaggi seguenti spiegano come utilizzare Google Cloud DNS per ottenere un nome di dominio e gestire i server di dominio.
  1. Apri Google Cloud Console e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
  2. Seleziona il progetto che hai creato nel passaggio 2: crea un progetto Google Cloud.
  3. Se non lo hai già fatto, attiva l'API Cloud DNS. Consulta la pagina relativa all'abilitazione delle API.
  4. Crea un indirizzo IP statico:
    • Se utilizzi GKE, segui le istruzioni riportate nella pagina relativa alla prenotazione di un indirizzo IP esterno statico per creare un indirizzo IP statico che i processi esterni possano utilizzare per comunicare con il traffico in entrata del runtime ibrido. Puoi assegnare all'indirizzo il nome che preferisci, ad esempio apigee-hybrid-runtime. Al termine, utilizzerai il numero IP nella configurazione del cluster nel passaggio successivo. Ad esempio: 34.66.75.196
    • Se utilizzi Anthos GKE, segui le istruzioni nella documentazione di Anthos GKE per creare un indirizzo IP statico.
  5. Ottieni l'IP esterno che hai appena prenotato.
  6. Crea il set di record per l'endpoint in entrata di Istio di runtime. Questo è l'indirizzo per effettuare chiamate API al gateway ibrido. Inserisci l'IP esterno che hai ottenuto nel passaggio precedente e aggiungi un prefisso al nome di dominio, ad esempio example-endpoint. Per le istruzioni, consulta la pagina Creare un nuovo record.
    1. Creare una zona pubblica gestita. Per le istruzioni, consulta la sezione Creare una zona pubblica gestita.
    2. Crea un nuovo set di record con:
      • Nome DNS: il nome delle chiamate API esterne dell'endpoint con cui comunicheranno, come api-services o example-endpoint.
      • Tipo di record risorsa: A
      • TTL e TTL Unit: accetta i valori predefiniti
      • Indirizzo IP: l'IP statico che hai creato.
  7. La visualizzazione Dettagli zona elenca i server DNS avanzati come dati NS per la tua nuova zona. Copia i dati del record DNS, come illustrato nell'esempio seguente:

  8. Torna alla pagina del tuo dominio presso il registrar (ad esempio, Google Domains).
  9. Seleziona il tuo dominio.
  10. Seleziona DNS.
  11. Nella sezione Server dei nomi, fai clic su Modifica.
  12. Inserisci i server dei nomi di dominio che hai copiato dalla pagina Network Services Cloud DNS. Ad esempio:

Ora Google Cloud DNS gestirà i record DNS per il tuo dominio.

Installa Certbot su una VM

Ora che hai configurato Cloud DNS per gestire i server del tuo dominio, installerai il client Certbot con il plug-in dns_google su una VM Cloud. Il client ti consente di ottenere i certificati autorizzati per il tuo dominio da un endpoint di crittografia Let's.

  1. Apri Google Cloud Console e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
  2. Seleziona il progetto che hai creato nel passaggio 2: crea un progetto Google Cloud.
  3. Seleziona IAM e amp; account di servizio.

    La vista Account di servizio mostra un elenco degli account di servizio del progetto.

  4. Per creare un nuovo account di servizio, fai clic su + Crea account di servizio nella parte superiore della vista.

    Viene visualizzata la vista Dettagli account di servizio.

  5. Nel campo Nome account di servizio, inserisci il nome dell'account di servizio.

    Facoltativamente, puoi aggiungere una descrizione nel campo Descrizione dell'account di servizio. Le descrizioni sono utili per ricordarti lo scopo di un determinato account di servizio.

  6. Fai clic su Crea.

    Google Cloud crea un nuovo account di servizio e visualizza la vista Autorizzazioni dell'account di servizio. Utilizza questa visualizzazione per assegnare un ruolo al nuovo account di servizio.

  7. Fai clic sull'elenco a discesa Seleziona un ruolo.
  8. Seleziona il ruolo Proprietario progetto.
  9. Fai clic su Continua.
  10. Fai clic su Fine.
  11. In Google Cloud Console, seleziona Compute Engine Istanze VM.
  12. Crea un'istanza VM denominata certmanager.
  13. Nella sezione Disco di avvio, scegli CentOS7 e 20 GB per l'unità permanente SSD.
  14. Imposta l'account di servizio sull'account che hai creato in precedenza.
  15. Installare Certbot e il plug-in dns_google nella macchina ed eseguire il client 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
      

    Ad esempio:

    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. Ora puoi trovare i file del certificato e della chiave privata autorizzati in questa directory: cd /etc/letsencrypt/live/your_domain_name/

    Ad esempio:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.pem  README
  17. Copia i file fullchain.pem e privkey.pem nella tua macchina locale.
  18. Facoltativo: crea un secret di Kubernetes con la coppia di certificati/chiavi. Vedi le istruzioni in Opzione 2: secret di Kubernetes in Configurazione di TLS e mTLS sul traffico in entrata di Istio.
  19. Aggiorna il file di override in modo che punti al certificato e alla chiave privata.

    Ad esempio:

    ...
    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.pem"
    
    mart: # Assuming you are not using Apigee Connect
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      replicaCountMin: 1
      replicaCountMax: 1

    Oppure se utilizzi i secret di 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"
    
    mart: # Assuming you are not using Apigee Connect
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
        sslSecret: myorg-test-policy-secret"
      replicaCountMin: 1
      replicaCountMax: 1
    
    ...  
  20. Applica le modifiche:

    Se hai cambiato la configurazione mart, applica le modifiche:

    apigeectl apply -f your_overrides_file --all-envs

    Se hai cambiato la configurazione envs, applica le modifiche:

    apigeectl apply -f your_overrides_file --all-envs
  21. Testa la configurazione

    Eseguire il deployment e il test di un proxy, come spiegato nella sezione Creare ed eseguire il deployment di un nuovo proxy API.