Compartilhar via


Usar o Azure Key Vault para fornecer certificados TLS/SSL para a JVM

Este artigo descreve como integrar o Cofre de Chaves do Azure na JVM para entregar certificados TLS/SSL.

Adicionar o provedor JCA ao arquivo java.security

Para registrar o provedor JCA, a JVM precisa conhecê-lo. 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 <maximum-value> espaço reservado pelo valor máximo nesta posição entre todas as entradas. Por exemplo: security.provider.13=SunPKCS11.

  3. Aumente o número dessa entrada em 1. Por exemplo, security.provider.13 deve se tornar security.provider.14.

  4. Adicione a seguinte linha:

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

Observação

Certifique-se de que cada security.provider.<X> entrada tenha um valor numérico diferente para <X>o , e mantenha-os ordenados incrementalmente começando 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ê deseja 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 Cofre de Chaves 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:

    • 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 pelo 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 na ID do Microsoft Entra 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, password, 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 acessar o Cofre de Chaves 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

Usar uma identidade gerenciada

Para habilitar uma identidade gerenciada atribuída pelo 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 a ID do objeto da identidade gerenciada, use o seguinte comando para criar a política de acesso do Cofre de Chaves 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

A ID do objeto da identidade gerenciada também é chamada 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 Cofre de Chaves do Azure para Java.

Próximas etapas