Questo argomento funge solo da esempio. Spiega come ottenere un certificato TLS dall'autorità di certificazione (CA) Let's Encrypt. Questi passaggi vengono forniti principalmente come esempio da seguire nel caso in cui non si disponga di un altro modo pronto per ottenere una coppia di certificato/chiave autorizzata da un'autorità di certificazione. 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 certificati TLS per due gateway in entrata Istio esposti al di fuori del cluster:
Gateway | Requisito TLS |
---|---|
Gateway in entrata runtime | Puoi utilizzare una coppia chiave/certificato autofirmato o certificati TLS autorizzati. |
Gateway in entrata MART (facoltativo quando non utilizzi Apigee Connect) | Richiede una coppia di certificati/chiave TLS autorizzata o un secret Kubernetes. |
Requisiti
È necessario un nome di dominio ottenuto mediante 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 avere 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.- Apri Google Cloud Console e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
- Seleziona il progetto che hai creato nel passaggio 2: crea un progetto Google Cloud.
- Se non lo hai già fatto, attiva l'API Cloud DNS. Consulta la pagina relativa all'abilitazione delle API.
- Crea un indirizzo IP statico:
- Se utilizzi GKE, segui le istruzioni riportate nella sezione Prenotare un indirizzo IP esterno statico per creare un indirizzo IP statico che possa essere utilizzato dai processi esterni 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.
- Se utilizzi GKE, segui le istruzioni riportate nella sezione Prenotare un indirizzo IP esterno statico per creare un indirizzo IP statico che possa essere utilizzato dai processi esterni per comunicare con il traffico in entrata del runtime ibrido. Puoi assegnare all'indirizzo il nome che preferisci, ad esempio
- Ottieni l'IP esterno che hai appena prenotato.
- Crea set di record per l'endpoint in entrata di Istio Istio per il 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.- Creare una zona pubblica gestita. Per le istruzioni, vedi Creare una zona pubblica gestita.
- Crea un nuovo set di record con:
- Nome DNS: il nome dell'endpoint delle chiamate API esterne con cui comunicherà, ad esempio
api-services
oexample-endpoint
- Resource Record Type (Tipo di record risorsa): A
- TTL e TTL Unit: accetta i valori predefiniti
- IP IP: l'IP statico che hai creato.
- Nome DNS: il nome dell'endpoint delle chiamate API esterne con cui comunicherà, ad esempio
- La visualizzazione Dettagli zona elenca i quattro server DNS come dati NS per la tua nuova zona. Copia i dati del record DNS, come mostrato nell'esempio seguente:
- Torna alla pagina del tuo dominio presso il registrar (ad esempio, Google Domains).
- Seleziona il tuo dominio.
- Seleziona DNS.
- Nella sezione Server dei nomi, fai clic su Modifica.
Inserisci i server dei nomi di dominio che hai copiato dalla pagina Network DNS di Cloud Services. 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 in una VM Cloud. Il client consente di ottenere certificati autorizzati per il tuo dominio da un endpoint Let's.
- Apri Google Cloud Console e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
- Seleziona il progetto che hai creato nel passaggio 2: crea un progetto Google Cloud.
- Seleziona IAM e amministrazione; account di servizio.
Nella vista Account di servizio viene visualizzato un elenco degli account di servizio del progetto.
- Per creare un nuovo account di servizio, fai clic su +Crea account di servizio nella parte superiore della visualizzazione.
Viene visualizzata la visualizzazione Dettagli account di servizio.
- Nel campo Nome account di servizio, inserisci il nome dell'account.
Facoltativamente, puoi aggiungere una descrizione nel campo Descrizione account di servizio. Le descrizioni sono utili per ricordarti come viene utilizzato un determinato account di servizio.
- Fai clic su Crea.
Google Cloud crea un nuovo account di servizio e visualizza la visualizzazione delle Autorizzazioni account di servizio. Utilizza questa visualizzazione per assegnare un ruolo al nuovo account di servizio.
- Fai clic sull'elenco a discesa Seleziona un ruolo.
- Seleziona il ruolo Proprietario progetto.
- Fai clic su Continua.
- Fai clic su Fine.
- In Google Cloud Console, seleziona Compute Engine > Istanze VM.
- Crea un'istanza VM denominata certmanager.
- Nella sezione Disco di avvio, scegli CentOS7 e 20 GB per l'unità permanente SSD.
- Imposta l'account di servizio su quello creato in precedenza.
- 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
- 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 - Copia i file
fullchain.pem
eprivkey.pem
sul tuo computer locale. - Facoltativo: crea un secret Kubernetes con la coppia certificato/chiave. Vedi le istruzioni in Opzione 2: secret di Kubernetes in Configurare TLS e mTLS nel traffico in entrata Istio.
- 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 ...
- Applica le modifiche:
Se hai cambiato la configurazione di
mart
, applica le modifiche:apigeectl apply -f your_overrides_file --all-envs
Se hai cambiato la configurazione di
envs
, applica le modifiche:apigeectl apply -f your_overrides_file --all-envs
Verificare la configurazione
Esegui il deployment e il test di un proxy, come spiegato nella sezione Creare ed eseguire il deployment di un nuovo proxy API.