Share via


Usare Azure Key Vault per distribuire certificati TLS/SSL alla JVM

Questo articolo descrive come integrare Azure Key Vault nella JVM per distribuire certificati TLS/SSL.

Aggiungere il provider JCA al file java.security

Per registrare il provider JCA, la JVM deve conoscerla. Per eseguire questa attività, seguire questa procedura:

  1. Creare una copia del file java.security all'interno dell'installazione di JVM e denominare il file my.java.security.

  2. All'interno del file cercare la riga security.provider.<maximum-value>. Sostituire il <maximum-value> segnaposto con il valore massimo in questa posizione tra tutte le voci. Ad esempio: security.provider.13=SunPKCS11.

  3. Incrementare il numero di questa voce di 1. Ad esempio, security.provider.13 deve diventare security.provider.14.

  4. Aggiungere la riga seguente:

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

Nota

Assicurarsi che ogni security.provider.<X> voce abbia un valore numerico diverso per <X>e mantenerle ordinate in modo incrementale a partire da 1.

Come eseguire l'applicazione

Per eseguire l'applicazione, seguire questa procedura e sostituire i <...> segnaposto con i propri valori:

  1. Aggiungere il file azure-security-keyvault-jca-X.Y.Z.jar al classpath. Ad esempio, se si vuole eseguire l'integrazione con Tomcat 9, è necessario aggiungere il percorso completo del file azure-security-keyvault-jca-X.Y.Z.jar al classpath Java usando tomcat9w.exe.

  2. Aggiungere -Djava.security.properties==my.java.security alla riga di comando.

  3. Aggiungere -Dazure.keyvault.uri=<your-keyvault-uri> alla riga di comando per indicare quale Insieme di credenziali delle chiavi di Azure usare. Ad esempio: -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. Aggiungere gli argomenti indicati nell'elenco seguente, a seconda dello scenario:

    • Se si esegue l'autenticazione usando un'entità servizio, aggiungere gli argomenti seguenti:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • Se si esegue l'autenticazione usando un'identità gestita assegnata dal sistema, non sono necessari altri argomenti.

    • Se si esegue l'autenticazione usando un'identità gestita assegnata dall'utente, aggiungere l'argomento seguente:

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

Per altre informazioni su questi scenari di autenticazione, vedere Oggetti applicazione e entità servizio in Microsoft Entra ID e Funzionamento delle identità gestite per le risorse di Azure con le macchine virtuali di Azure.

Usare un’entità servizio

Per creare un ID client di Azure e un segreto client di Azure, usare il comando seguente, sostituendo i <...> segnaposto con i propri valori. Assicurarsi di archiviare i valori restituiti, ad esempio 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}

Archiviare i valori restituiti in modo da poterli usare in un secondo momento.

Assicurarsi che il client specificato da CLIENT_ID possa accedere all'insieme di credenziali delle chiavi di destinazione. Per concedere l'accesso, usare il comando seguente, sostituendo il <your-key-vault-name> segnaposto:

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

Usare un'identità gestita

Per abilitare un'identità gestita assegnata dal sistema o creare un'identità gestita assegnata dall'utente, seguire le istruzioni in Configurare le identità gestite per le risorse di Azure in una macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure

Dopo aver ottenuto l'ID oggetto dell'identità gestita, usare il comando seguente per creare i criteri di accesso dell'insieme di credenziali delle chiavi per l'identità gestita:

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

L'ID oggetto dell'identità gestita viene chiamato anche ID entità quando si usa un'identità gestita assegnata dall'utente.

Esempi di TLS/SSL lato client/server

Per esempi di TLS/SSL lato client/server, vedere la sezione Esempi della libreria client JCA di Azure Key Vault per Java.

Passaggi successivi