Azure Key Vault gebruiken om TLS/SSL-certificaten te leveren aan de JVM
In dit artikel wordt beschreven hoe u Azure Key Vault integreert in de JVM om TLS/SSL-certificaten te leveren.
De JCA-provider toevoegen aan het java.security-bestand
Als u de JCA-provider wilt registreren, moet de JVM hiervan op de hoogte zijn. Voer de volgende stappen uit om deze taak uit te voeren:
Maak een kopie van het bestand java.security in de JVM-installatie en noem het bestand my.java.security.
Zoek in het bestand naar de regel
security.provider.<maximum-value>
. Vervang de tijdelijke aanduiding<maximum-value>
door de maximumwaarde op deze positie onder alle vermeldingen. Bijvoorbeeld:security.provider.13=SunPKCS11
.Verhoog het aantal van deze vermelding met 1.
security.provider.13
moet bijvoorbeeldsecurity.provider.14
worden.Voeg de volgende regel toe:
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Notitie
Zorg ervoor dat elke security.provider.<X>
vermelding een andere numerieke waarde voor <X>
heeft en ze incrementeel geordend houden vanaf 1.
Uw toepassing uitvoeren
Als u uw toepassing wilt uitvoeren, gebruikt u de volgende stappen en vervangt u de <...>
tijdelijke aanduidingen door uw eigen waarden:
Voeg het azure-security-keyvault-jca-X.Y.Z.jar-bestand toe aan het class path. Als u bijvoorbeeld wilt integreren met Tomcat 9, moet u het volledige pad van het bestand azure-security-keyvault-jca-X.Y.Z.jar toevoegen aan het Java-klassepad met behulp van tomcat9w.exe.
Voeg
-Djava.security.properties==my.java.security
toe aan de opdrachtregel.Voeg
-Dazure.keyvault.uri=<your-keyvault-uri>
toe aan de opdrachtregel om aan te geven welke Azure Key Vault moet worden gebruikt. Bijvoorbeeld:-Dazure.keyvault.uri=https://some.vault.azure.net/
.Voeg de argumenten toe die worden aangegeven in de volgende lijst, afhankelijk van uw scenario:
Als u verifieert met behulp van een service-principal, voegt u de volgende argumenten toe:
-Dazure.keyvault.tenant-id=<your-tenant-id>
-Dazure.keyvault.client-id=<your-client-id>
-Dazure.keyvault.client-secret=<your-client-secret>
Als u verifieert met behulp van een door het systeem toegewezen beheerde identiteit, zijn er geen argumenten meer vereist.
Als u verifieert met een door de gebruiker toegewezen beheerde identiteit, voegt u het volgende argument toe:
-Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>
Voor meer informatie over deze verificatiescenario's, zie toepassings- en service-principalobjecten in Microsoft Entra ID en hoe beheerde identiteiten voor Azure-resources werken met virtuele Azure-machines.
Een service-principal gebruiken
Als u een Azure-client-id en een Azure-clientgeheim wilt maken, gebruikt u de volgende opdracht, waarbij u de tijdelijke aanduidingen van de <...>
vervangt door uw eigen waarden. Zorg ervoor dat u de geretourneerde waarden opslaat, zoals appId
, password
en 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}
Sla de geretourneerde waarden op, zodat u ze later kunt gebruiken.
Zorg ervoor dat de client die is opgegeven door CLIENT_ID
toegang heeft tot de doelsleutelkluis. Gebruik de volgende opdracht om toegang te verlenen, waarbij u de tijdelijke aanduiding <your-key-vault-name>
vervangt:
az keyvault set-policy \
--name <your-key-vault-name> \
--spn ${CLIENT_ID} \
--secret-permissions get list \
--certificate-permissions get list \
--key-permissions get list
Een beheerde identiteit gebruiken
Als u een door het systeem toegewezen beheerde identiteit wilt inschakelen of een door de gebruiker toegewezen beheerde identiteit wilt maken, volgt u de instructies in Beheerde identiteiten configureren voor Azure-resources op een Azure-VM met behulp van Azure CLI
Nadat u de object-id van de beheerde identiteit hebt opgehaald, gebruikt u de volgende opdracht om het toegangsbeleid van uw Key Vault voor uw beheerde identiteit te maken:
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
Notitie
De object-id van de beheerde identiteit wordt ook wel de principal-id genoemd bij het gebruik van een door de gebruiker toegewezen beheerde identiteit.
Voorbeelden van TLS/SSL aan client-/serverzijde
Zie de sectie Voorbeelden van de JCA-clientbibliotheek van Azure Key Vault voor Javavoor voorbeelden van TLS/SSL aan de client-/serverzijde.
Volgende stappen
documentatie voor Java in Azure-ontwikkelhulpprogramma's