Share 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 como 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 nesta 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
    

Nota

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

Como executar seu aplicativo

Para executar seu aplicativo, use as seguintes etapas e substitua os <...> espaços reservados por 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, adicione o caminho completo do arquivo azure-security-keyvault-jca-X.Y.Z.jar ao classpath Java usando tomcat9w.exe.

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

  3. Adicione -Dazure.keyvault.uri=<your-keyvault-uri> à linha de comando para indicar qual Azure Key Vault 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:

    • Se você autenticar usando 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 principais 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 de 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, , tenantpassword.

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 acessar o Cofre da Chave de destino. Para conceder acesso, use o seguinte comando, substituindo o <your-key-vault-name> espaço reservado:

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

Utilizar uma identidade gerida

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

Nota

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 obter exemplos de TLS/SSL do lado do cliente/servidor, consulte a seção Exemplos da biblioteca de cliente JCA do Azure Key Vault para Java.

Próximos passos