Esempio: come ottenere i certificati TLS

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

Dove puoi utilizzare questi certificati

Devi fornire certificati TLS per i gateway Ingress di runtime esposti all'esterno del cluster.

Vedi anche Connessioni esterne.

Requisiti

Avrai bisogno di 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 certificati TLS autorizzati, devi disporre di un nome di dominio qualificato. I seguenti passaggi spiegano come utilizzare Google Cloud DNS per ottenere un nome di dominio e gestire i server di dominio.
  1. Apri la console Google Cloud e accedi al tuo account.
  2. Seleziona il progetto in cui è installato Apigee hybrid.
  3. Se non l'hai ancora fatto, abilita l'API Cloud DNS. Consulta Abilitazione delle API.
  4. Crea un indirizzo IP statico:
    • Se utilizzi GKE, segui le istruzioni riportate in Configura indirizzi IP esterni statici per creare indirizzi IP statici che i processi esterni possono utilizzare per comunicare con l'ingresso 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 riportate nella documentazione di Anthos GKE per creare un indirizzo IP statico.
  5. Ottieni l'IP esterno che hai appena prenotato.
  6. Crea un set di record per l'endpoint Ingress Istio di runtime. Questo è l'indirizzo per effettuare chiamate API al gateway ibrido. Inserisci l'IP esterno ottenuto nel passaggio precedente e aggiungi un prefisso al nome di dominio, ad esempio example-endpoint. Per le istruzioni, vedi Creare un nuovo record.
    1. Crea una zona pubblica gestita. Per le istruzioni, vedi Creare una zona pubblica gestita.
    2. Crea un nuovo set di record con:
      • Nome DNS: il nome dell'endpoint con cui comunicheranno le chiamate API esterne, ad esempio api-services o example-endpoint
      • Tipo di record di risorse: A
      • TTL e Unità TTL: accetta i valori predefiniti.
      • Indirizzo IP: l'IP statico che hai creato.
  7. La visualizzazione Dettagli zona elenca quattro server DNS come dati NS per la nuova zona. Copia i dati del record DNS, come mostrato 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 Cloud DNS di Network Services. Ad esempio:

Ora Google Cloud DNS gestirà i record DNS del tuo dominio.

Installa Certbot su una VM

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

  1. Apri la console Google Cloud 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 amministrazione > Service account.

    La visualizzazione Service account mostra un elenco dei service account del progetto.

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

    Viene visualizzata la pagina Dettagli del service account.

  5. Nel campo Nome service account, inserisci il nome del account di servizio.

    (Facoltativo) Puoi aggiungere una descrizione nel campo Descrizione service account. Le descrizioni sono utili per ricordarti a cosa serve un determinato account di servizio.

  6. Fai clic su Crea.

    Google Cloud crea un nuovo account di servizio e mostra la visualizzazione Autorizzazioni service account. 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. Nella console Google Cloud , 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 il service account su quello che hai creato sopra.
  15. Installa Certbot e il plug-in dns_google sulla macchina ed esegui 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 autorizzato e della chiave privata 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.key  README
  17. Copia i file fullchain.pem e privkey.key nella tua macchina locale.
  18. (Facoltativo): crea un secret Kubernetes con la coppia di certificato/chiave. Consulta le istruzioni nell'opzione 2: Kubernetes Secret in Configurazione di TLS e mTLS sul gateway in entrata 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.key"

    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"
    
    ...  
  20. Applica le modifiche alla configurazione di envs:

    Helm

    Esegui helm upgrade per ogni ambiente che vuoi aggiornare.

    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
    -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --env ENV_NAME

    oppure, per aggiornare il componente per tutti gli ambienti:

    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --all-envs
  21. Testare la configurazione

    Esegui il deployment e testa un proxy. Consulta la panoramica della creazione del tuo primo proxy API.