Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erste Schritte mit der Azure Key Vault Zertifikatclientbibliothek für Java. Führen Sie die weiter unten beschriebenen Schritte aus, um das Paket zu installieren und den Beispielcode für grundlegende Aufgaben auszuprobieren.
Tip
Wenn Sie mit Azure Key Vault Zertifikatressourcen in einer Spring-Anwendung arbeiten, sollten Sie Spring Cloud Azure als Alternative in Betracht ziehen. Spring Cloud Azure ist ein Open Source-Projekt, das eine nahtlose Spring-Integration mit Azure-Diensten bietet. Weitere Informationen zu Spring Cloud Azure und ein Beispiel mit Key Vault Zertifikaten finden Sie unter Enable HTTPS im Spring Boot with Azure Key Vault certificates.
Zusätzliche Ressourcen:
Prerequisites
- Ein Azure-Abonnement – create one for free.
- Java Development Kit (JDK) Version 8 oder höher
- Apache Maven
- Azure CLI
In dieser Schnellstartanleitung wird davon ausgegangen, dass Sie Azure CLI und Apache Maven in einem Linux-Terminalfenster ausführen.
Einrichten
Diese Schnellstartanleitung verwendet die Azure Identitätsbibliothek mit Azure CLI, um den Benutzer bei Azure Services zu authentifizieren. Entwickler können auch Visual Studio oder Visual Studio Code verwenden, um ihre Anrufe zu authentifizieren, weitere Informationen finden Sie unter Authenticate the client with Azure Identity client library.
Anmelden bei Azure
Führen Sie den Befehl
loginaus.az loginWenn die CLI Ihren Standardbrowser öffnen kann, wird dies ausgeführt und eine Azure Anmeldeseite geladen.
Öffnen Sie andernfalls die Browserseite https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.
Melden Sie sich im Browser mit Ihren Anmeldeinformationen an.
Erstellen einer neuen Java Konsolen-App
Verwenden Sie in einem Konsolenfenster den Befehl mvn, um eine neue Java Konsolen-App mit dem Namen akv-certificates-java zu erstellen.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Die Ausgabe der Erstellung des Projekts sieht in etwa wie folgt aus:
[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] ------------------------------------------------------------------------
Wechseln Sie zum neu erstellten Ordner akv-certificates-java/.
cd akv-certificates-java
Installieren des Pakets
Öffnen Sie die Datei pom.xml in Ihrem Text-Editor. Fügen Sie der Gruppe der Abhängigkeiten das folgende Abhängigkeitselement hinzu:
<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>
Erstellen einer Ressourcengruppe und eines Schlüsseltresors
In dieser Schnellstartanleitung wird ein vorkonfigurierter Azure Key Vault verwendet. Sie können einen Schlüsseltresor erstellen, indem Sie die Schritte in den folgenden Schnellstarts ausführen:
Alternativ können Sie diese Azure CLI Befehle ausführen.
Important
Jeder Schlüsseltresor muss einen eindeutigen Namen haben. Ersetzen Sie in den folgenden Beispielen <vault-name> durch den Namen Ihres Schlüsseltresors.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Gewähren des Zugriffs auf Ihren Schlüsseltresor
Um Berechtigungen für Ihren Schlüsseltresor über Role-Based Access Control (RBAC) zu erhalten, weisen Sie Ihrem Benutzerprinzipalnamen (User Principal Name, UPN) eine Rolle zu, mithilfe des Azure CLI-Befehls 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>"
Ersetzen Sie <upn>, <subscription-id> und <vault-name> durch Ihre tatsächlichen Werte. Wenn Sie einen anderen Ressourcengruppennamen verwendet haben, ersetzen Sie auch "myResourceGroup". Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).
Festlegen von Umgebungsvariablen
Diese Anwendung verwendet den Namen des Schlüsseltresors als Umgebungsvariable namens KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS oder Linux
export KEY_VAULT_NAME=<vault-name>
Objektmodell
Mit der Azure Key Vault Zertifikatclientbibliothek für Java können Sie Zertifikate verwalten. Im Abschnitt Codebeispiele wird veranschaulicht, wie Sie einen Client erstellen sowie ein Zertifikat erstellen, abrufen und löschen.
Die vollständige Konsolen-App finden Sie weiter unten.
Code-Beispiele
Hinzufügen von Direktiven
Fügen Sie am Anfang Ihres Codes die folgenden Anweisungen hinzu:
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;
Authentifizieren und Erstellen eines Clients
Anwendungsanforderungen an die meisten Azure Dienste müssen autorisiert sein. Die Verwendung der DefaultAzureCredential ist der empfohlene Ansatz für die Implementierung kennwortloser Verbindungen mit Azure Diensten in Ihrem Code.
DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet werden soll. Bei diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren.
In dieser Schnellstartanleitung authentifiziert sich DefaultAzureCredential mit den Anmeldeinformationen des lokalen Entwicklungsbenutzers, der bei der Azure CLI angemeldet ist. Wenn die Anwendung für Azure bereitgestellt wird, kann derselbe DefaultAzureCredential Code automatisch eine verwaltete Identität ermitteln und verwenden, die einem App-Dienst, einem virtuellen Computer oder anderen Diensten zugewiesen ist. Weitere Informationen finden Sie in der Übersicht zu verwalteten Identitäten.
In diesem Beispiel wird der Name Ihres Schlüsseltresors in den Schlüsseltresor-URI mit dem Format https://<vault-name>.vault.azure.net erweitert. Weitere Informationen zur Authentifizierung beim Schlüsseltresor finden Sie im Entwicklerhandbuch.
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();
Speichern eines Zertifikats
Nachdem Ihre Anwendung authentifiziert wurde, können Sie Ihrem Schlüsseltresor mithilfe der Methode certificateClient.beginCreateCertificate ein Zertifikat hinzufügen. Dies erfordert einen Namen für das Zertifikat und eine Zertifikatrichtlinie – der Wert "myCertificate" wird der certificateName Variablen in diesem Beispiel zugewiesen und eine Standardrichtlinie verwendet.
Die Zertifikaterstellung ist ein zeitintensiver Vorgang. Sie können seinen Status abrufen oder auf seinen Abschluss warten.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Sie können das Zertifikat nach seiner Erstellung über den folgenden Aufruf abrufen:
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Abrufen eines Zertifikats
Sie können das zuvor erstellte Zertifikat jetzt mit der certificateClient.getCertificate-Methode abrufen.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
Sie können jetzt auf die Details des abgerufenen Zertifikats mit Vorgängen wie retrievedCertificate.getName, retrievedCertificate.getProperties usw. zugreifen. Das gilt auch für den Inhalt (retrievedCertificate.getCer).
Löschen eines Zertifikats
Abschließend löschen Sie das Zertifikat mit der Methode certificateClient.beginDeleteCertificate aus dem Schlüsseltresor. Dies ist ebenfalls einen zeitintensiver Vorgang.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Bereinigen von Ressourcen
Wenn sie nicht mehr benötigt wird, können Sie die Azure CLI oder Azure PowerShell verwenden, um Ihren Schlüsseltresor und die entsprechende Ressourcengruppe zu entfernen.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Beispielcode
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ächste Schritte
In dieser Schnellstartanleitung haben Sie einen Schlüsseltresor erstellt sowie ein Zertifikat erstellt, abgerufen und gelöscht. Weitere Informationen zu Key Vault und zur Integration in Ihre Anwendungen finden Sie in den folgenden Artikeln.
- Lesen Sie eine Overview von Azure Key Vault
- Weitere Informationen finden Sie im Azure Key Vault Entwicklerhandbuch
- Sicherer Zugriff auf einen Schlüsseltresor
- Überprüfen von zertifikatspezifischen bewährten Sicherheitsmethoden