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:
Gör en kopia av java.security-filen i JVM-installationen och ge filen namnet my.java.security.
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
.Öka antalet för den här posten med 1. Till exempel
security.provider.13
bör blisecurity.provider.14
.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:
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.
Lägg till
-Djava.security.properties==my.java.security
på kommandoraden.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/
.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.