Esta página descreve os passos para pedir um certificado através do serviço de autoridade de certificação.
Para estabelecer confiança e comunicação segura no seu Google Distributed Cloud (GDC) isolado, peça um certificado ativado ou desativado para ACME ao serviço de autoridade de certificação.
Antes de começar
Para receber as autorizações necessárias para pedir um certificado, peça ao administrador de IAM da sua organização para lhe conceder a função de administrador do serviço de autoridade de certificação (certificate-authority-service-admin
).
Obtenha o ficheiro kubeconfig
Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:
Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.
Use o caminho para o ficheiro kubeconfig do servidor da API de gestão para substituir MANAGEMENT_API_SERVER_KUBECONFIG
nestas instruções.
Peça um certificado através da AC com o modo ACME ativado
Se a autoridade de certificação estiver alojada no modo ACME, apresenta o URL do servidor ACME no respetivo estado depois de ficar pronta.
Recolha o URL do servidor ACME da AC a partir do seu ambiente de nuvem distribuída:
kubectl get certificateauthorities CA_NAME -n USER_PROJECT_NAMESPACE -ojson | jq -r '.status.acme.uri'
Substitua o seguinte:
CA_NAME
: O nome da AC, que pode ser uma AC raiz ou secundária.USER_PROJECT_NAMESPACE
: o nome do espaço de nomes onde reside o projeto do utilizador.
Peça um certificado através da AC com o modo ACME desativado
Para criar um pedido de certificado com o modo ACME desativado, tem de criar e aplicar um recurso CertificateRequest
à sua instância isolada do Distributed Cloud. Existem duas formas de o fazer:
- Crie um
CertificateResource
e inclua um CSR no recurso. - Crie um
CertificateResource
usando uma chave privada gerada automaticamente pela GDC e forneça as configurações do certificado como valores personalizados.
Peça um certificado através de um CSR
Crie um recurso
CertificateRequest
e guarde-o como um ficheiro YAML denominadocert-request.yaml
. Use a sua chave privada para criar um pedido de assinatura de certificado (CSR) e adicione-o ao seu recurso: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
Substitua as seguintes variáveis:
Variável Descrição CERT_REQ_NAME O nome do certificado. USER_PROJECT_NAMESPACE O nome do espaço de nomes onde reside o projeto do utilizador. CA_NAME O nome da AC, que pode ser uma AC raiz ou uma sub-AC. CSR O pedido de assinatura de certificado para assinar com a CA. SECRET_NAME O nome do segredo do Kubernetes que contém a chave privada e o certificado da CA assinado. Aplique o recurso personalizado à sua instância do Distributed Cloud:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
Substitua
MANAGEMENT_API_SERVER_KUBECONFIG
pelo caminho para o ficheiro kubeconfig do servidor da API Management.Verifique a prontidão do pedido de certificado:
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))'
O resultado é semelhante ao seguinte:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
Obtenha o nome do Secret do certificado:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
A saída mostra o
SECRET_NAME
que contém o certificado assinado:test-jwk-1
Peça um certificado com uma chave gerada automaticamente
Crie um recurso
CertificateRequest
e guarde-o como um ficheiro YAML denominadocert-request.yaml
. Preencha os valores escolhidos para o certificado: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
Substitua
COMMON_NAME
pelo nome comum do certificado.Substitua as seguintes variáveis opcionais. Tem de incluir, pelo menos, um destes valores no recurso
CertificateRequest
:Variável Descrição ORGANIZATION Organização a usar no certificado. LOCALITY A localidade do certificado. STATE Estado ou província a usar no certificado. COUNTRY O país do certificado. DNS_NAMES DNSNames
é uma lista dedNSName subjectAltNames
a definir no certificado.IP_ADDRESS Uma lista de ipAddress subjectAltNames
a definir no certificado.RFC822_NAMES Uma lista de rfc822Name subjectAltNames
a definir no certificado.URIS Uma lista de uniformResourceIdentifier subjectAltNames
a serem definidos no certificado.Aplique o recurso personalizado à sua instância do Distributed Cloud:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
Verifique a prontidão do pedido de certificado:
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))'
O resultado é semelhante ao seguinte:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
Obtenha o nome do Secret do certificado:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
A saída mostra o
SECRET_NAME
que contém o certificado assinado:test-jwk-1
Liste os pedidos de certificados
Use o parâmetro certificaterequests
para listar todos os recursos CertificateRequest
:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequests
O resultado tem um aspeto semelhante ao seguinte:
NAMESPACE NAME READY AGE
foo cert-req True 30s