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 java.security-filen i JVM-installationen och ge filen namnet my.java.security.

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

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

  4. Lägg till följande rad:

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

Kommentar

Se till att varje security.provider.<X> post har ett annat talvärde för <X>och behåll dem stegvis ordnade från och med 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> på kommandoraden för att ange vilket Azure Key Vault som ska användas. 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 Program- och tjänstobjekt 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ållarna med dina egna värden. Se till att lagra de returnerade värdena, till exempel 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}

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

Se till att klienten som anges av CLIENT_ID har åtkomst till målets Nyckelvalv. Om du vill bevilja åtkomst använder du följande kommando och ersätter <your-key-vault-name> platshållaren:

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

Kommentar

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