Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med klientbiblioteket för Azure Key Vault Certifikat för Java. Följ stegen nedan för att installera paketet och prova exempelkod för grundläggande uppgifter.
Tip
Om du arbetar med Azure Key Vault certifikatresurser i ett Spring-program rekommenderar vi att du överväger Spring Cloud Azure som ett alternativ. Spring Cloud Azure är ett projekt med öppen källkod som ger sömlös Spring-integrering med Azure tjänster. Mer information om Spring Cloud Azure och ett exempel med Key Vault certifikat finns i Aktivera HTTPS i Spring Boot med Azure Key Vault certifikat.
Ytterligare resurser:
Prerequisites
- En Azure prenumeration – skapa en kostnadsfri.
- Java Development Kit (JDK) version 8 eller senare
- Apache Maven
- Azure CLI
Den här snabbstarten förutsätter att du kör Azure CLI och Apache Maven i ett Linux-terminalfönster.
Förbereda
Den här snabbstarten använder biblioteket Azure Identity med Azure CLI för att autentisera användare till Azure Services. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. Mer information finns i Autentisera klienten med klientbiblioteket för Azure identitet.
Logga in på Azure
Kör kommandot
login.az loginOm CLI kan öppna standardwebbläsaren kommer den att göra det och läsa in en Azure inloggningssida.
Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och anger auktoriseringskoden som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Skapa en ny Java-konsolapp
I ett konsolfönster använder du kommandot mvn för att skapa en ny Java konsolapp med namnet akv-certificates-java.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Utdata från genereringen av projektet ser ut ungefär så här:
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: artifactId, Value: akv-certificates-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: artifactId, Value: akv-certificates-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-certificates-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------
Ändra katalog till den nyligen skapade akv-certificates-java/-mappen.
cd akv-certificates-java
Installera paketet
Öppna filen pom.xml i textredigeraren. Lägg till följande beroendeelement i gruppen med beroenden.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-certificates</artifactId>
<version>4.8.6</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.2</version>
</dependency>
Skapa en resursgrupp och ett nyckelvalv
Den här snabbstarten använder ett förskapat Azure nyckelvalv. Du kan skapa ett nyckelvalv genom att följa stegen i dessa snabbguider:
- Azure CLI snabbstart
- Azure PowerShell snabbstart
- snabbstart för Azure portal
Du kan också köra dessa Azure CLI kommandon.
Important
Varje nyckelvalv måste ha ett unikt namn. Ersätt <vault-name> med namnet på ditt nyckelvalv i följande exempel.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Bevilja åtkomst till ditt nyckelvalv
Om du vill få behörighet till ditt nyckelvalv via Role-Based Access Control (RBAC) tilldelar du en roll till ditt UPN (User Principal Name) med kommandot Azure CLI az role assignment create.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Ersätt <upn>, <subscription-id>och <vault-name> med dina faktiska värden. Om du använde ett annat resursgruppsnamn ersätter du även "myResourceGroup". Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).
Ange miljövariabler
Det här applikationen använder ditt nyckelvalvnamn som en miljövariabel kallad KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS eller Linux
export KEY_VAULT_NAME=<vault-name>
Objektmodell
Med klientbiblioteket för Azure Key Vault certifikat för Java kan du hantera certifikat. I avsnittet Kodexempel visas hur du skapar en klient, skapar ett certifikat, hämtar ett certifikat och tar bort ett certifikat.
Hela konsolappen finns nedan.
Kodexempel
Lägga till direktiv
Lägg till följande direktiv överst i koden:
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.certificates.CertificateClient;
import com.azure.security.keyvault.certificates.CertificateClientBuilder;
import com.azure.security.keyvault.certificates.models.CertificateOperation;
import com.azure.security.keyvault.certificates.models.CertificatePolicy;
import com.azure.security.keyvault.certificates.models.DeletedCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificateWithPolicy;
Autentisera och skapa en klient
Programbegäranden till de flesta Azure tjänster måste auktoriseras. Att använda DefaultAzureCredential är den rekommenderade metoden för att implementera lösenordslösa anslutningar till Azure tjänster i koden.
DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.
I den här snabbstarten autentiserar DefaultAzureCredential till nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändare som är inloggad i Azure CLI. När programmet distribueras till Azure kan samma DefaultAzureCredential kod automatiskt identifiera och använda en hanterad identitet som har tilldelats till en App Service, virtuell dator eller andra tjänster. Mer information finns i Översikt över hanterad identitet.
I det här exemplet expanderas namnet på ditt nyckelvalv till nyckelvalvets URI i formatet https://<vault-name>.vault.azure.net. Mer information om autentisering till Key Vault finns i "Utvecklarguide".
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
CertificateClient certificateClient = new CertificateClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Spara ett certifikat
Nu när din applikation har autentiserats, kan du skapa ett certifikat i nyckelvalvet med hjälp av metoden `certificateClient.beginCreateCertificate`. Detta kräver ett namn på certifikatet och en certifikatprincip – värdet "myCertificate" tilldelas till variabeln certificateName i det här exemplet och en standardprincip används.
Skapande av certifikat är en tidskrävande åtgärd som du kan följa dess framsteg för eller vänta på att det ska slutföras.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Du kan hämta certifikatet när du har skapat det via följande anrop:
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Hämta ett certifikat
Nu kan du hämta det tidigare skapade certifikatet med certificateClient.getCertificate metoden.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
Nu kan du komma åt detaljer om det hämtade certifikatet med åtgärder som retrievedCertificate.getName, retrievedCertificate.getProperties, osv., samt även dess innehåll retrievedCertificate.getCer.
Ta bort ett certifikat
Slutligen tar vi bort certifikatet från ditt nyckelvalv med certificateClient.beginDeleteCertificate metoden, som också är en tidskrävande åtgärd.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Rensa resurser
När det inte längre behövs kan du använda Azure CLI eller Azure PowerShell för att ta bort ditt nyckelvalv och motsvarande resursgrupp.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Exempelkod
package com.keyvault.certificates.quickstart;
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.certificates.CertificateClient;
import com.azure.security.keyvault.certificates.CertificateClientBuilder;
import com.azure.security.keyvault.certificates.models.CertificateOperation;
import com.azure.security.keyvault.certificates.models.CertificatePolicy;
import com.azure.security.keyvault.certificates.models.DeletedCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificateWithPolicy;
public class App {
public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
System.out.printf("key vault name = %s and kv uri = %s \n", keyVaultName, keyVaultUri);
CertificateClient certificateClient = new CertificateClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
String certificateName = "myCertificate";
System.out.print("Creating a certificate in " + keyVaultName + " called '" + certificateName + " ... ");
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
System.out.print("done.");
System.out.println("Retrieving certificate from " + keyVaultName + ".");
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
System.out.println("Your certificate's ID is '" + retrievedCertificate.getId() + "'.");
System.out.println("Deleting your certificate from " + keyVaultName + " ... ");
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
System.out.print("done.");
}
}
Nästa steg
I den här snabbstarten skapade du ett nyckelvalv, skapade ett certifikat, hämtade det och tog sedan bort det. Om du vill veta mer om Key Vault och hur du integrerar den med dina program fortsätter du till artiklarna nedan.
- Läs en Översikt över Azure Key Vault
- Läs utvecklarguiden för Azure Key Vault
- Hur man skyddar åtkomst till ett nyckelvalv
- Granska metodtips för certifikatspecifik säkerhet