Quickstart: Azure Key Vault Certificate-clientbibliotheek voor Java (certificaten)

Aan de slag met de Azure Key Vault-clientbibliotheek met certificaten voor Java. Volg de onderstaande stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen.

Tip

Als u werkt met Azure Key Vault-certificatenresources in een Spring-toepassing, raden we u aan Spring Cloud Azure als alternatief te beschouwen. Spring Cloud Azure is een opensource-project dat naadloze Spring-integratie met Azure-services biedt. Zie HTTPS in Spring Boot inschakelen met Azure Key Vault-certificaten voor meer informatie over Spring Cloud Azure en om een voorbeeld te zien van Key Vault-certificaten.

Aanvullende bronnen:

Vereisten

In deze quickstart wordt ervan uitgegaan dat u Azure CLI en Apache Maven uitvoert in een Linux-terminalvenster.

Instellen

Deze quickstart maakt gebruik van de Azure Identity-bibliotheek met Azure CLI om de gebruiker te verifiëren bij Azure-services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun oproepen te verifiëren: zie De client verifiëren met de Azure Identity-clientbibliotheek (Engelstalig) voor meer informatie.

Aanmelden bij Azure

  1. Voer de opdracht login uit.

    az login
    

    Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.

    Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal.

  2. Meldt u zich in de browser aan met uw accountreferenties.

Nieuwe Java-console-app maken

Gebruik in een consolevenster de opdracht mvn om een nieuwe Java-console-app te maken met de naam akv-certificates-java.

mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
                       -DartifactId=akv-certificates-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

De uitvoer van het project ziet er ongeveer als volgt uit:

[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] ------------------------------------------------------------------------

Wijzig uw map in de zojuist gemaakte map akv-certificates-java/.

cd akv-certificates-java

Het pakket installeren

Open het bestand pom.xml in uw teksteditor. Voeg de volgende afhankelijkheidselementen toe aan de groep met afhankelijkheden.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-certificates</artifactId>
      <version>4.1.3</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.0</version>
    </dependency>

Een resourcegroep en sleutelkluis maken

In deze quickstart wordt gebruikgemaakt van een vooraf gemaakte Azure-sleutelkluis. U kunt een sleutelkluis maken met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.

U kunt ook de onderstaande Azure CLI- of Azure PowerShell-opdrachten uitvoeren.

Belangrijk

Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Toegang verlenen tot uw sleutelkluis

Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Vervang <app-id>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. <app-id> is de toepassings-id (client) van uw geregistreerde toepassing in Azure AD.

Omgevingsvariabelen instellen

In deze applicatie wordt de naam van uw sleutelkluis gebruikt als een omgevingsvariabele met de naam KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS of Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objectmodel

Met de Azure Key Vault-clientbibliotheek met certificaten voor Java kunt u certificaten beheren. In de sectie Codevoorbeelden ziet u hoe u een client en een certificaat maakt, een certificaat ophaalt en verwijdert.

De volledige console-app is hieronder beschikbaar.

Codevoorbeelden

Voeg -instructies toe

Voeg de volgende instructies toe aan het begin van de code:

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;

Een client verifiëren en maken

Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van DefaultAzureCredential is de aanbevolen methode voor het implementeren van wachtwoordloze verbindingen met Azure-services in uw code. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.

In deze quickstart DefaultAzureCredential verifieert u zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing in Azure wordt geïmplementeerd, kan dezelfde DefaultAzureCredential code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, virtuele machine of andere services. Zie Overzicht van beheerde identiteiten voor meer informatie.

In dit voorbeeld wordt de naam van uw sleutelkluis uitgebreid naar de sleutelkluis-URI, in de indeling https://<your-key-vault-name>.vault.azure.net. Zie Gids voor ontwikkelaars voor meer informatie over het verifiëren van een sleutelkluis.

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();

Een geheim opslaan

Nu uw toepassing is geverifieerd, kunt u een certificaat in uw sleutelkluis maken met behulp van de methode certificateClient.beginCreateCertificate. Hiervoor is een naam vereist voor het certificaat en een certificaatbeleid: de waarde myCertificate is in dit voorbeeld toegewezen aan de variabele certificateName en er wordt een standaardbeleid gebruikt.

Het maken van een certificaat is een langdurige bewerking, waarvan u de voortgang kunt controleren of wachten totdat deze is voltooid.

SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
    certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();

Zodra het certificaat is gemaakt, kunt u het ophalen met behulp van de volgende aanroep:

KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();

Een certificaat ophalen

U kunt nu het eerder gemaakte certificaat ophalen met de certificateClient.getCertificate methode.

KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

U hebt nu toegang tot de details van het opgehaalde certificaat met bewerkingen zoals retrievedCertificate.getName, retrievedCertificate.getPropertiesenzovoort. Evenals de inhoud retrievedCertificate.getCerervan.

Een certificaat verwijderen

Ten slotte gaan we het certificaat uit de sleutelkluis verwijderen met de methode certificateClient.beginDeleteCertificate, wat ook een langdurige bewerking is.

SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();

Resources opschonen

Wanneer u de sleutelkluis en de bijbehorende resourcegroep niet meer nodig hebt, kunt u Azure CLI of Azure PowerShell gebruiken om ze te verwijderen.

az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"

Voorbeeldcode

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.");
    }
}

Volgende stappen

In deze quickstart hebt u een sleutelkluis gemaakt, een certificaat gemaakt, opgehaald en vervolgens verwijderd. Voor meer informatie over Key Vault en hoe u Key Vault integreert met uw toepassingen gaat u verder naar de artikelen hieronder.