Criando autoridades de certificado raiz

Com o IBM Cloud® Secrets Manager, é possível construir e gerenciar o seu próprio sistema de infraestrutura de chave pública (PKI) criando autoridades de certificação raiz e intermediária (CA).

Uma autoridade de certificação (CA) é a entidade que assina e emite seus certificados SSL/TLS. Se estiver procurando a capacidade de gerar rapidamente um certificado autoassinado, você poderá usar o site Secrets Manager para criar uma CA raiz assinada internamente. Você pode usar este CA como a âncora de confiança para uma cadeia de certificados. Depois de criar uma CA raiz para sua instância, você pode usá-la para assinar uma CA de nível inferior ou subordinada, por exemplo, outras Autoridades Certificadoras intermediárias que você criar no serviço.

É possível criar até 10 autoridades de certificação raiz por instância. Para visualizar uma lista das configurações que estão disponíveis para sua instância, acesse a página Mecanismos de segredo > Certificados privados na IU do Secrets Manager.

Antes de Iniciar

Antes de começar, certifique-se de ter o nível de acesso necessário. Para gerenciar as configurações de mecanismo para sua instância, é necessária a função de serviço Gerenciador ou superior.

Criando uma autoridade de certificação raiz na IU

Você pode criar uma autoridade de certificação raiz assinada internamente para sua instância de serviço usando a interface do usuário Secrets Manager.

  1. No console, clique no ícone Menu Ícone do menu > Lista de Recursos.

  2. Na lista de serviços, selecione sua instância do Secrets Manager.

  3. Na página Mecanismos de segredos, clique na guia Certificados privados.

  4. Na tabela Autoridades de certificação, clique em Criar autoridade de certificação para iniciar o assistente de criação.

  5. Especificar o tipo de autoridade de certificação e as opções.

    1. Selecione Autoridade de certificação raiz como o tipo de Autoridade.
    2. Digite um nome para identificar facilmente sua autoridade de certificação.
    3. Selecione um tempo de vida máximo (TTL) para o certificado a ser gerado para esta autoridade de certificação. O TTL determina por quanto tempo o certificado da autoridade de certificação permanece válido.
    4. Selecione o número máximo de certificados intermediários subordinados ou de nível inferior que podem existir na cadeia.
    5. Para codificar a URL do certificado da autoridade de certificação emissora em certificados de autoridade de certificação intermediários, configure a opção Codificar URL como Ativado.
  6. Insira os campos de nome do assunto para o seu certificado de autoridade de certificação raiz.

  7. Selecione o serviço de gerenciamento de chaves. Escolha o serviço Secrets Manager para criar as chaves de autoridade de certificado raiz internamente pelo serviço ou escolha Hyper Protect Crypto Services (HPCS). Caso o HPCS seja selecionado, execute as seguintes tarefas:

    1. Selecione sua instância HPCS ou digite o CRN da instância HPCS manualmente

    2. Selecione o segredo de credenciais IAM que foi criado anteriormente para autenticação com o HPCS.

      Uma vez que a credencial do IAM tenha sido definida na configuração da CA, ela não poderá ser substituída posteriormente.

    3. Selecione o repositório de chaves privado HPCS na lista de repositórios de chaves ou digite a ID do repositório de chaves manualmente.

    4. Escolha usar as chaves existentes ou gerar novas chaves. No caso de selecionar uma chave privada HPCS existente ou inserir um ID de chave privada manualmente, certifique-se de que exista uma chave pública e que ela tenha o mesmo ID da chave privada no repositório de chaves privadas.

      Se você optar por gerar novas chaves, essas chaves não serão excluídas pelo site Secrets Manager caso a configuração seja excluída.

  8. Selecione o algoritmo de chave que você deseja usar para gerar a chave pública e privada para o seu certificado de autoridade de certificação.

  9. Determine se irá ativar os pontos de construção e distribuição da lista de revogação de certificado (CRL) para o seu certificado de autoridade de certificação.

    Uma LCR é uma lista de certificados que são revogados pela autoridade certificadora emissora antes da data de expiração programada. Um certificado que é listado como parte de uma CRL não pode mais ser confiável por aplicativos.

    1. Para criar uma CRL para sua CA raiz com cada solicitação de certificado, defina a opção de criação de CRL como Ativado.
    2. Para codificar a URL da lista de revogação na autoridade de certificação raiz, configure a opção Pontos de distribuição de CRL como Ativado.
    3. Selecione um tempo de vida (TTL) da CRL gerada. O TTL determina por quanto tempo a CRL permanece válida.
  10. Revise suas seleções. Para criar a autoridade de certificação raiz, clique em Criar.

Agora é possível selecionar essa autoridade de certificação raiz quando você criar uma autoridade de certificação intermediária com assinatura interna. Para modificar ou remover uma configuração existente, clique no menu Ações Ícone de ações na linha da autoridade de certificação que deseja atualizar.

Criando uma autoridade de certificado raiz com a API

Você pode criar uma autoridade de certificação raiz assinada internamente para sua instância de serviço chamando a API Secrets Manager.

O exemplo a seguir mostra uma consulta que você pode usar para criar uma autoridade de certificação raiz.

curl -X POST
  --H "Authorization: Bearer {iam_token}" \
  --H "Accept: application/json" \
  --H "Content-Type: application/json" \
  --d '{
  "config_type": "private_cert_configuration_root_ca",
  "name": "test-root-CA",
  "common_name": "example.com",
  "crl_disable": false,
  "crl_distribution_points_encoded": true,
  "issuing_certificates_urls_encoded": true,
  "max_ttl": "43830h"
}' \  
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"

Se você estiver trazendo seu próprio HSM, inclua o seguinte na solicitação:

"crypto_key": {
    "label": "my_key",
    "allow_generate_key": true,
    "provider": {
      "type": "hyper_protect_crypto_services",
      "instance_crn": "replace_with_hpcs_crn::",
      "pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
      "private_keystore_id": "replace_with_keystore_id"
    }
  }

Uma resposta bem-sucedida inclui a configuração na sua instância de serviço.

{
  "common_name": "example.com",
  "config_type": "private_cert_configuration_root_ca",
  "created_at": "2022-06-27T11:58:15Z",
  "created_by": "iam-ServiceId-e4a2f0a4-3c76-4bef-b1f2-fbeae11c0f21",
  "crl_disable": false,
  "crl_distribution_points_encoded": true,
  "data": {
    "certificate": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bva\n-----END CERTIFICATE-----",
    "expiration": 1825612535,
    "issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bvad\n-----END CERTIFICATE-----",
    "serial_number": "48:a5:ba:cc:8f:84:f4:95:38:6e:f6:9d:9e:d7:8f:d8:43:d3:55:bd"
  },
  "exclude_cn_from_sans": false,
  "format": "pem",
  "issuing_certificates_urls_encoded": true,
  "max_path_length": -1,
  "max_ttl_seconds": 31536000,
  "name": "test-root-CA",
  "private_key_format": "der",
  "secret_type": "private_cert",
  "updated_at": "2022-10-05T21:33:11Z"
}

Para obter mais informações sobre os parâmetros de solicitação obrigatórios e opcionais, consulte Adicionar uma configuração.

Criação de uma autoridade de certificação raiz a partir da CLI

É possível criar uma autoridade de certificação raiz assinada internamente para sua instância de serviço usando o comando ibmcloud secrets-manager configuration-create.

O exemplo a seguir mostra um comando que você pode usar para criar uma autoridade de certificação raiz.

ibmcloud secrets-manager configuration-create
  --configuration-prototype='{
    "config_type": "private_cert_configuration_root_ca",
    "name": "example-root-CA",
    "max_ttl": "43830h",
    "crl_expiry": "72h",
    "crl_disable": false,
    "crl_distribution_points_encoded": true,
    "issuing_certificates_urls_encoded": true,
    "common_name": "example.com",
    "alt_names": [
      "alt-name-1","alt-name-2"
      ],
    "ip_sans": "127.0.0.1",
    "uri_sans": "https://www.example.com/test",
    "other_sans": ["1.2.3.5.4.3.201.10.4.3;utf8:test@example.com"],
    "ttl": "2190h",
    "format": "pem",
    "private_key_format": "der",
    "key_type": "rsa",
    "key_bits": 4096,
    "max_path_length": -1,
    "exclude_cn_from_sans": false,
    "permitted_dns_domains": ["exampleString"],
    "ou": ["exampleString"],
    "organization": ["exampleString"],
    "country": ["exampleString"],
    "locality": ["exampleString"],
    "province": ["exampleString"],
    "street_address": ["exampleString"],
    "postal_code": ["exampleString"],
    "serial_number": "d9:be:fe:35:ba:09:42:b5:35:ba:09:42:b5"
  }'

Se você estiver trazendo seu próprio HSM, inclua o seguinte no comando:

"crypto_key": {
    "label": "my_key",
    "allow_generate_key": true,
    "provider": {
      "type": "hyper_protect_crypto_services",
      "instance_crn": "replace_with_hpcs_crn::",
      "pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
      "private_keystore_id": "replace_with_keystore_id"
    }
  }

Criação de uma autoridade de certificação raiz com o Terraform

É possível criar uma autoridade de certificação raiz assinada internamente para sua instância de serviço usando o Terraform for Secrets Manager.

O exemplo a seguir mostra uma configuração que você pode usar para criar uma autoridade de certificação raiz.

    resource "ibm_sm_private_certificate_configuration_root_ca" "test_root_ca" {
        instance_id = local.instance_id
        region = local.region
        name = "test-root-ca"
        common_name = "root.example.com"
        max_ttl = "3650d"
        issuing_certificates_urls_encoded = true
    }

Se você estiver trazendo seu próprio HSM, inclua o seguinte na configuração:

crypto_key {
    label = "my_key"
    allow_generate_key = true
    provider {
      type = "hyper_protect_crypto_services"
      instance_crn = "replace_with_hpcs_crn::"
      pin_iam_credentials_secret_id = "replace_with_iam_credentials_secret_guid"
      private_keystore_id = "replace_with_keystore_id"
    }
}

Recuperação de uma autoridade de certificação raiz na interface do usuário

É possível recuperar o valor da autoridade de certificação raiz usando a IU do Secrets Manager.

  1. No mecanismo secreto Certificados públicos, clique no menu Ações ícone Ações para abrir uma lista de opções para sua configuração do mecanismo.
  2. Para visualizar o valor da configuração, clique em View configuration (Exibir configuração).
  3. Clique em Confirmar depois de assegurar que você esteja em um ambiente seguro.

O valor secreto é exibido por 15 segundos, em seguida, o diálogo é fechado.

Recuperando uma autoridade de certificação raiz usando a CLI

É possível recuperar o valor da autoridade de certificação raiz usando a CLI do Secrets Manager. No comando de exemplo a seguir, substitua o nome da configuração do mecanismo pelo nome da sua configuração

ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud

Substitua {instance_ID} e {region} pelos valores que se aplicam à sua instância de serviço do Secrets Manager. Para localizar a URL de terminal específica para sua instância, é possível copiá-la da página Terminais na IU do Secrets Manager. Para obter mais informações, consulte Visualizando suas URLs de terminal

Recuperando uma autoridade de certificação raiz usando a API

É possível recuperar o valor da autoridade de certificação raiz usando a API do Secrets Manager Na solicitação de exemplo a seguir, substitua o nome de configuração do mecanismo por seu nome de configuração.

curl -X GET --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations/{name}"

Substitua {instance_ID} e {region} pelos valores que se aplicam à sua instância de serviço do Secrets Manager. Para localizar a URL de terminal específica para sua instância, é possível copiá-la da página Terminais na IU do Secrets Manager. Para obter mais informações, consulte Visualizando suas URLs de terminal

Uma resposta bem-sucedida retorna o valor da configuração do mecanismo, juntamente com outros metadados. Para obter mais informações sobre os parâmetros de solicitação obrigatórios e opcionais, consulte Obter um segredo.

Próximas etapas