Questa pagina descrive i passaggi per richiedere un certificato utilizzando Certificate Authority Service.
Per stabilire l'attendibilità e la comunicazione sicura all'interno del tuo Google Distributed Cloud (GDC) air-gap, richiedi un certificato abilitato o disabilitato per ACME dal servizio Certificate Authority Service.
Prima di iniziare
Per ottenere le autorizzazioni necessarie per richiedere un certificato, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore del servizio di autorità di certificazione (certificate-authority-service-admin
).
Recupera il file kubeconfig
Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:
Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.
Utilizza il percorso del file kubeconfig del server API Management per sostituire
MANAGEMENT_API_SERVER_KUBECONFIG
in queste istruzioni.
Richiedere un certificato utilizzando la CA con la modalità ACME attivata
Se l'autorità di certificazione è ospitata in modalità ACME, restituisce l'URL del server ACME nel suo stato dopo che è pronta.
Raccogli l'URL del server ACME CA dal tuo ambiente Distributed Cloud:
kubectl get certificateauthorities CA_NAME -n USER_PROJECT_NAMESPACE -ojson | jq -r '.status.acme.uri'
Sostituisci quanto segue:
CA_NAME
: il nome della CA, che può essere una CA radice o una CA secondaria.USER_PROJECT_NAMESPACE
: il nome dello spazio dei nomi in cui si trova il progetto utente.
Richiedi un certificato utilizzando la CA con la modalità ACME disattivata
Per creare una richiesta di certificato con la modalità ACME disattivata, devi creare e
applicare una risorsa CertificateRequest
all'istanza air-gapped di Distributed Cloud. Esistono due modi per eseguire questa operazione:
- Crea un
CertificateResource
e includi una CSR nella risorsa. - Crea un
CertificateResource
utilizzando una chiave privata generata automaticamente da GDC e fornisci le configurazioni del certificato come valori personalizzati.
Richiedere un certificato utilizzando una CSR
Crea una risorsa
CertificateRequest
e salvala come file YAML denominatocert-request.yaml
. Utilizza la tua chiave privata per creare una richiesta di firma del certificato (CSR) e aggiungila alla tua risorsa:apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE csr: CSR signedCertificateSecret: SECRET_NAME
Sostituisci le seguenti variabili:
Variabile Descrizione CERT_REQ_NAME Il nome del certificato. USER_PROJECT_NAMESPACE Il nome dello spazio dei nomi in cui si trova il progetto utente. CA_NAME Il nome della CA, che può essere una CA radice o una CA secondaria. CSR La richiesta di firma del certificato da firmare utilizzando la CA. SECRET_NAME Il nome del secret Kubernetes che contiene la chiave privata e il certificato CA firmato. Applica la risorsa personalizzata all'istanza Distributed Cloud:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
Sostituisci
MANAGEMENT_API_SERVER_KUBECONFIG
con il percorso del file kubeconfig del server API Management.Verifica la preparazione della richiesta di certificato:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
L'output è simile al seguente:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
Recupera il nome del secret del certificato:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
L'output mostra il
SECRET_NAME
contenente il certificato firmato:test-jwk-1
Richiedere un certificato utilizzando una chiave generata automaticamente
Crea una risorsa
CertificateRequest
e salvala come file YAML denominatocert-request.yaml
. Compila i valori scelti per il certificato:apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE certificateConfig: subjectConfig: commonName: COMMON_NAME organization: ORGANIZATION locality: LOCALITY state: STATE country: COUNTRY dnsNames: - DNS_NAMES ipAddresses: - IP_ADDRESSES rfc822Names: - RFC822NAMES uris: - URIS signedCertificateSecret: SECRET_NAME
Sostituisci
COMMON_NAME
con il nome comune del certificato.Sostituisci le seguenti variabili facoltative. Devi includere almeno uno di questi valori nella risorsa
CertificateRequest
:Variabile Descrizione ORGANIZATION L'organizzazione da utilizzare nel certificato. LOCALITY La località del certificato. STATE Stato o provincia da utilizzare nel certificato. COUNTRY Il paese del certificato. DNS_NAMES DNSNames
è un elenco didNSName subjectAltNames
da impostare sul certificato.IP_ADDRESS Un elenco di ipAddress subjectAltNames
da impostare sul certificato.RFC822_NAMES Un elenco di rfc822Name subjectAltNames
da impostare sul certificato.URIS Un elenco di uniformResourceIdentifier subjectAltNames
da impostare sul certificato.Applica la risorsa personalizzata all'istanza Distributed Cloud:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
Verifica la preparazione della richiesta di certificato:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
L'output è simile al seguente:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
Recupera il nome del secret del certificato:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
L'output mostra il
SECRET_NAME
contenente il certificato firmato:test-jwk-1
Elenca le richieste di certificati
Utilizza il parametro certificaterequests
per elencare tutte le risorse CertificateRequest
:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequests
L'output è simile al seguente:
NAMESPACE NAME READY AGE
foo cert-req True 30s