Partilhar via


Usar o Azure Key Vault para entregar certificados TLS/SSL à JVM

Este artigo descreve como integrar o Azure Key Vault à JVM para fornecer certificados TLS/SSL.

Adicione o provedor JCA ao arquivo java.security

Para registrar o provedor JCA, a JVM precisa saber sobre ele. Para realizar essa tarefa, use as seguintes etapas:

  1. Faça uma cópia do arquivo java.security dentro da instalação da JVM e nomeie o arquivo my.java.security.

  2. Dentro do arquivo, procure a linha security.provider.<maximum-value>. Substitua o espaço reservado <maximum-value> pelo valor máximo nessa posição entre todas as entradas. Por exemplo: security.provider.13=SunPKCS11.

  3. Incremente o número desta entrada em 1. Por exemplo, security.provider.13 deve tornar-se security.provider.14.

  4. Adicione a seguinte linha:

    security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
    

Observação

Certifique-se de que cada entrada de security.provider.<X> tem um valor de número diferente para <X>e mantenha-os ordenados incrementalmente começando com 1.

Como executar seu aplicativo

Para executar a sua aplicação, siga os seguintes passos e substitua os placeholders <...> pelos seus próprios valores:

  1. Adicione o arquivo azure-security-keyvault-jca-X.Y.Z.jar ao classpath. Por exemplo, se você quiser integrar com o Tomcat 9, deverá adicionar o caminho completo do arquivo azure-security-keyvault-jca-X.Y.Z.jar ao classpath Java usando tomcat9w.exe.

  2. Adicione -Djava.security.properties==my.java.security à linha de comando.

  3. Adicione -Dazure.keyvault.uri=<your-keyvault-uri> à linha de comando para indicar qual Cofre da Chave do Azure usar. Por exemplo: -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. Adicione os argumentos indicados na lista a seguir, dependendo do seu cenário:

    • Ao autenticar-se utilizando uma entidade de serviço, adicione os seguintes argumentos:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • Se você autenticar usando uma identidade gerenciada atribuída ao sistema, não serão necessários mais argumentos.

    • Se você autenticar usando uma identidade gerenciada atribuída pelo usuário, adicione o seguinte argumento:

      • -Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>

Para obter mais informações sobre esses cenários de autenticação, consulte objetos de entidade de aplicativo e serviço no Microsoft Entra ID e Como as identidades gerenciadas para recursos do Azure funcionam com máquinas virtuais do Azure.

Usar uma entidade de serviço

Para criar uma ID de cliente do Azure e um segredo do cliente do Azure, use o comando a seguir, substituindo os espaços reservados <...> por seus próprios valores. Certifique-se de armazenar os valores retornados, como appId, passworde tenant.

export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}

Armazene os valores retornados para que você possa usá-los mais tarde.

Certifique-se de que o cliente especificado por CLIENT_ID pode aceder ao Cofre da Chave de destino. Para conceder acesso, use o seguinte comando, substituindo o marcador <your-key-vault-name>:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --spn ${CLIENT_ID} \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

Usar uma identidade gerenciada

Para habilitar uma identidade gerenciada atribuída ao sistema ou criar uma identidade gerenciada atribuída pelo usuário, siga as instruções em Configurar identidades gerenciadas para recursos do Azure em uma VM do Azure usando a CLI do Azure

Depois de obter o ID do objeto da identidade gerenciada, use o seguinte comando para criar a política de acesso do Cofre da Chave para sua identidade gerenciada:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --object-id <object-id-of-your-managed-identity> \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

Observação

O ID do objeto da identidade gerenciada também é chamado de ID principal ao usar uma identidade gerenciada atribuída pelo usuário.

Exemplos de TLS/SSL do lado do cliente/servidor

Para exemplos de TLS/SSL no lado do cliente/servidor, consulte a secção Exemplos da biblioteca cliente Azure Key Vault JCA para Java.

Próximos passos