Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Prise en main de la bibliothèque cliente de certificats Azure Key Vault pour Java. Suivez les étapes ci-dessous pour installer le package et tester un exemple de code relatif à des tâches de base.
Tip
Si vous utilisez des ressources Azure Key Vault Certificates dans une application Spring, nous vous recommandons de considérer Spring Cloud Azure comme alternative. Spring Cloud Azure est un projet open source qui fournit une intégration spring transparente avec Azure services. Pour en savoir plus sur spring Cloud Azure et pour voir un exemple utilisant Key Vault Certificats, consultez Enable HTTPS dans Spring Boot avec Azure Key Vault certificats.
Ressources supplémentaires :
Prerequisites
- Un abonnement Azure - créez-en un gratuitement.
- Java Development Kit (JDK) version 8 ou ultérieure
- Apache Maven
- Azure CLI
Ce guide de démarrage rapide suppose que vous exécutez Azure CLI et Apache Maven dans une fenêtre de terminal Linux.
Configuration
Ce guide de démarrage rapide utilise la bibliothèque d’identités Azure avec Azure CLI pour authentifier l’utilisateur auprès de Azure Services. Les développeurs peuvent également utiliser Visual Studio ou Visual Studio Code pour authentifier leurs appels, pour plus d’informations, consultez Authenticate le client avec Azure bibliothèque de client Identity.
Connectez-vous à Azure
Exécutez la commande
login.az loginSi l’interface CLI peut ouvrir votre navigateur par défaut, elle le fera et chargera une page de connexion Azure.
Sinon, ouvrez une page de navigateur à l’adresse https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.
Dans le navigateur, connectez-vous avec les informations d’identification de votre compte.
Créer une application console Java
Dans une fenêtre de console, utilisez la commande mvn pour créer une application console Java avec le nom akv-certificates-java.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Le résultat de la génération du projet doit ressembler à ceci :
[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] ------------------------------------------------------------------------
Changez de répertoire pour le dossier akv-certificates-java/ créé.
cd akv-certificates-java
Installer le package
Ouvrez le fichier pom.xml dans votre éditeur de texte. Ajoutez les éléments de dépendance suivants au groupe de dépendances.
<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>
Créer un groupe de ressources et un coffre de clés
Ce guide de prise en main rapide s’appuie sur un Key Vault Azure déjà configuré. Vous pouvez créer un coffre de clés en suivant les étapes décrites dans ces démarrage rapides :
- démarrage rapide Azure CLI
- démarrage rapide Azure PowerShell
- démarrage rapide du portail Azure
Vous pouvez également exécuter ces commandes Azure CLI.
Important
Chaque coffre de clés doit avoir un nom unique. Remplacez <vault-name> par le nom de votre coffre de clés dans les exemples suivants.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Accorder l’accès à votre coffre de clés
Pour obtenir des autorisations sur votre coffre de clés via Role-Based Access Control (RBAC), attribuez un rôle à votre nom d’utilisateur principal (UPN) à l’aide de la commande 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>"
Remplacez <upn>, <subscription-id>et <vault-name> par vos valeurs réelles. Si vous avez utilisé un autre nom de groupe de ressources, remplacez également « myResourceGroup ». Votre nom d’utilisateur principal (UPN) se présente généralement sous la forme d’une adresse électronique (par exemple username@domain.com).
Définir des variables d’environnement
Cette application utilise le nom de votre coffre de clés en tant que variable d’environnement appelée KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS ou Linux
export KEY_VAULT_NAME=<vault-name>
Modèle d'objet
La bibliothèque cliente de certificats Azure Key Vault pour Java vous permet de gérer les certificats. La section Exemples de code montre comment créer un client et comment créer, récupérer et supprimer un certificat.
L’application console complète est ci-dessous.
Exemples de code
Ajouter des directives
Ajoutez les directives suivantes en haut de votre 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;
Authentifier et créer un client
Les demandes d’application adressées à la plupart des services Azure doivent être autorisées. L’utilisation du DefaultAzureCredential est l’approche recommandée pour implémenter des connexions sans mot de passe aux services Azure dans votre code.
DefaultAzureCredential prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution. Cette approche permet à votre application d’utiliser différentes méthodes d’authentification dans différents environnements (local ou production) sans implémenter de code spécifique à l’environnement.
Dans ce guide de démarrage rapide, DefaultAzureCredential s’authentifie auprès du coffre de clés à l’aide des informations d’identification de l’utilisateur de développement local connecté à Azure CLI. Lorsque l’application est déployée sur Azure, le même code DefaultAzureCredential peut détecter et utiliser automatiquement une identité managée affectée à un service App Service, une machine virtuelle ou d’autres services. Pour plus d’informations, consultez Vue d’ensemble des identités managées.
Dans cet exemple, le nom de votre coffre de clés est étendu à l’URI du coffre de clés, au format https://<vault-name>.vault.azure.net. Pour plus d’informations sur l’authentification auprès du coffre de clés, consultez le Guide du développeur.
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();
Enregistrer un certificat
Votre application étant authentifiée, vous pouvez créer un certificat dans votre coffre de clés en utilisant la méthode certificateClient.beginCreateCertificate. Cela nécessite un nom pour le certificat et une stratégie de certificat : la valeur « myCertificate » est affectée à la certificateName variable dans cet exemple et une stratégie par défaut est utilisée.
La création du certificat est une opération longue, dont vous pouvez interroger la progression ou attendre la fin.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Une fois la création terminée, vous pouvez obtenir le certificat par le biais de l’appel suivant :
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Récupérer un certificat
Vous pouvez maintenant récupérer le certificat créé précédemment avec la méthode certificateClient.getCertificate.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
Vous pouvez maintenant accéder aux détails du certificat récupéré à l’aide d’opérations comme retrievedCertificate.getName, retrievedCertificate.getProperties, etc. ainsi qu’à son contenu retrievedCertificate.getCer.
Supprimer un certificat
Enfin, nous allons supprimer le certificat de votre coffre de clés avec la méthode certificateClient.beginDeleteCertificate, qui est également une opération longue.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Nettoyer les ressources
Quand vous n’en avez plus besoin, vous pouvez utiliser la Azure CLI ou Azure PowerShell pour supprimer votre coffre de clés et le groupe de ressources correspondant.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Exemple de code
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.");
}
}
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un coffre de clés et créé, récupéré, puis supprimé un certificat. Pour en savoir plus sur Key Vault et comment l’intégrer à vos applications, passez aux articles ci-dessous.
- Lire une vue d'ensemble d'Azure Key Vault
- Consultez le guide Azure Key Vault du développeur
- Découvrir comment Sécuriser l’accès à un coffre de clés
- Passer en revue les meilleures pratiques de sécurité spécifiques aux certificats