Dela via


Använda Azure Key Vault för att leverera TLS/SSL-certifikat till JVM

Den här artikeln beskriver hur du integrerar Azure Key Vault i JVM för att leverera TLS/SSL-certifikat.

Lägg till JCA-providern i java.security-filen

För att registrera JCA-providern behöver JVM veta om det. Utför den här uppgiften med hjälp av följande steg:

  1. Gör en kopia av filen java.security i JVM-installationen och ge filen namnet my.java.security.

  2. Leta efter raden security.provider.<maximum-value>i filen. Ersätt platshållaren <maximum-value> med det högsta värdet på den här platsen bland alla poster. Till exempel: security.provider.13=SunPKCS11.

  3. Öka antalet för den här posten med 1. Till exempel bör security.provider.13 bli security.provider.14.

  4. Lägg till följande rad:

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

Not

Se till att varje security.provider.<X>-post har ett annat talvärde för <X>, och behåll dem i stigande ordning med start från 1.

Så här kör du ditt program

Om du vill köra programmet använder du följande steg och ersätter platshållarna <...> med dina egna värden:

  1. Lägg till filen azure-security-keyvault-jca-X.Y.Z.jar i klassökvägen. Om du till exempel vill integrera med Tomcat 9 bör du lägga till den fullständiga sökvägen för filen azure-security-keyvault-jca-X.Y.Z.jar till Java-klassökvägen med hjälp av tomcat9w.exe.

  2. Lägg till -Djava.security.properties==my.java.security på kommandoraden.

  3. Lägg till -Dazure.keyvault.uri=<your-keyvault-uri> till kommandoraden för att ange vilket Azure Key Vault som ska användas. Till exempel: -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. Lägg till argumenten som anges i följande lista, beroende på ditt scenario:

    • Om du autentiserar med ett huvudnamn för tjänsten lägger du till följande argument:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • Om du autentiserar med en systemtilldelad hanterad identitet krävs inga fler argument.

    • Om du autentiserar med en användartilldelad hanterad identitet lägger du till följande argument:

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

Mer information om dessa autentiseringsscenarier finns i Objekt för program och tjänstens huvudnamn i Microsoft Entra ID och Hur hanterade identiteter för Azure-resurser fungerar med virtuella Azure-datorer.

Använda tjänstens huvudnamn

Om du vill skapa ett Azure-klient-ID och en Azure-klienthemlighet använder du följande kommando och ersätter <...> platshållare med dina egna värden. Se till att lagra de returnerade värdena, till exempel appId, passwordoch 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}

Lagra de värden som returneras så att du kan använda dem senare.

Se till att klienten som anges av CLIENT_ID kan komma åt det aktuella Nyckelvalvet. Om du vill bevilja åtkomst använder du följande kommando och ersätter platshållaren <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

Använda en hanterad identitet

Om du vill aktivera en systemtilldelad hanterad identitet eller skapa en användartilldelad hanterad identitet följer du anvisningarna i Konfigurera hanterade identiteter för Azure-resurser på en virtuell Azure-dator med Hjälp av Azure CLI

När du har hämtat objekt-ID för den hanterade identiteten använder du följande kommando för att skapa åtkomstprincipen för ditt Nyckelvalv för din hanterade identitet:

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

Not

Objekt-ID:t för den hanterade identiteten kallas även huvudnamns-ID när du använder en användartilldelad hanterad identitet.

TLS/SSL-exempel på klient-/serversidan

Exempel på TLS/SSL på klient-/serversidan finns i avsnittet Exempel i Azure Key Vault JCA-klientbiblioteket för Java.

Nästa steg