Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduzione alla libreria client dei certificati di Azure Key Vault per Java. Seguire questi passaggi per installare il pacchetto e provare il codice di esempio per le attività di base.
Tip
Se si utilizzano risorse Azure Key Vault Certificati in un'applicazione Spring, è consigliabile prendere in considerazione Spring Cloud Azure come un'alternativa. Spring Cloud Azure è un progetto open source che offre un'integrazione spring senza problemi con i servizi di Azure. Per altre informazioni su Spring Cloud Azure e per un esempio relativo all'uso di certificati Key Vault, vedere Enable HTTPS in Spring Boot con certificati Azure Key Vault.
Risorse aggiuntive:
Prerequisites
- Una sottoscrizione Azure - crearne una gratuitamente.
- Java Development Kit (JDK) versione 8 o successiva
- Apache Maven
- interfaccia della riga di comando di Azure
Questa guida introduttiva presuppone che sia in esecuzione interfaccia della riga di comando di Azure e Apache Maven in una finestra del terminale Linux.
Configurazione
In questo quickstart si utilizza la libreria di identità di Azure con interfaccia della riga di comando di Azure per effettuare l'autenticazione dell'utente ai servizi di Azure. Gli sviluppatori possono anche usare Visual Studio o Visual Studio Code per autenticare le chiamate. Per altre informazioni, vedere Authenticate the client with Azure Identity client library.
Accedere a Azure
Eseguire il comando
login.az loginSe l'interfaccia della riga di comando può aprire il browser predefinito, verrà caricata una pagina di accesso Azure.
In caso contrario, aprire una pagina del browser all'indirizzo https://aka.ms/devicelogin e immettere il codice di autorizzazione visualizzato nel terminale.
Accedere con le credenziali dell'account nel browser.
Creare una nuova app console Java
In una finestra della console usare il comando mvn per creare una nuova app console Java con il nome akv-certificates-java.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
L'output della generazione del progetto sarà simile al seguente:
[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] ------------------------------------------------------------------------
Spostarsi nella cartella akv-certificates-java/ appena creata.
cd akv-certificates-java
Installare il pacchetto
Aprire il file pom.xml nell'editor di testo. Aggiungere gli elementi di dipendenza seguenti al gruppo di dipendenze.
<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>
Creare un gruppo di risorse e un insieme di credenziali delle chiavi
Questa guida introduttiva usa un insieme di credenziali chiave di Azure precreato. È possibile creare un insieme di credenziali delle chiavi seguendo i passaggi di queste guide introduttive:
- interfaccia della riga di comando di Azure guida introduttiva
- Avvio rapido di Azure PowerShell
- Avvio rapido Azure portal
In alternativa, è possibile eseguire questi comandi interfaccia della riga di comando di Azure.
Important
Ogni insieme di credenziali delle chiavi deve avere un nome univoco. Sostituire <vault-name> con il nome del Key Vault negli esempi seguenti.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Concedere l'accesso all'insieme di credenziali delle chiavi
Per ottenere le autorizzazioni per l'archivio chiavi tramite Role-Based Controllo di accesso (RBAC), è necessario assegnare un ruolo al "User Principal Name" (UPN) usando il comando interfaccia della riga di comando di Azure 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>"
Sostituire <upn>, <subscription-id>e <vault-name> con i valori effettivi. Se è stato usato un nome di gruppo di risorse diverso, sostituire anche "myResourceGroup". L’UPN in genere sarà nel formato di un indirizzo di posta elettronica (ad esempio, username@domain.com).
Impostare le variabili di ambiente
Questa applicazione usa il nome dell'insieme di credenziali delle chiavi come variabile di ambiente denominata KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS o Linux
export KEY_VAULT_NAME=<vault-name>
Modello a oggetti
La libreria client Azure Key Vault certificati per Java consente di gestire i certificati. La sezione Esempi di codice mostra come creare un client e come creare, recuperare ed eliminare un certificato.
L'intera app console è disponibile di seguito.
Esempi di codice
Aggiungere direttive
Aggiungere le direttive seguenti all'inizio del codice:
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;
Autenticare e creare un client
Le richieste dell'applicazione alla maggior parte dei servizi di Azure devono essere autorizzate. L'uso di DefaultAzureCredential è l'approccio consigliato per implementare connessioni senza password ai servizi Azure nel codice.
DefaultAzureCredential supporta più metodi di autenticazione e determina il metodo da usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (locale e di produzione) senza implementare codice specifico dell'ambiente.
In questa guida di avvio rapido, DefaultAzureCredential esegue l'autenticazione al Key Vault utilizzando le credenziali dell'utente di sviluppo locale connesso all'interfaccia della riga di comando di Azure. Quando l'applicazione viene distribuita in Azure, lo stesso codice DefaultAzureCredential può individuare e usare automaticamente un'identità gestita assegnata a un servizio app, a una macchina virtuale o ad altri servizi. Per altre informazioni, vedere Panoramica delle identità gestite.
In questo esempio, il nome dell'istanza dell’insieme di credenziali delle chiavi viene espanso nel relativo URI, nel formato https://<vault-name>.vault.azure.net. Per altre informazioni sull'autenticazione nell'insieme di credenziali delle chiavi, vedere la Guida per sviluppatori.
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();
Salvare un certificato
Ora che l'applicazione è autenticata, è possibile creare un certificato nell'insieme di credenziali delle chiavi usando il metodo certificateClient.beginCreateCertificate. Questo richiede un nome per il certificato e un criterio di certificato: il valore "myCertificate" viene assegnato alla certificateName variabile in questo esempio e viene usato un criterio predefinito.
La creazione del certificato è un'operazione che richiede molto tempo e per la quale è possibile eseguire il polling dello stato di avanzamento o attenderne il completamento.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Una volta completata la creazione, è possibile ottenere il certificato tramite la chiamata seguente:
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Recuperare un certificato
È ora possibile recuperare il certificato creato in precedenza con il metodo certificateClient.getCertificate.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
È ora possibile accedere ai dettagli del certificato recuperato con operazioni come retrievedCertificate.getName, retrievedCertificate.getProperties e così via, oltre a retrievedCertificate.getCer dei relativi contenuti.
Eliminare un certificato
Infine, si eliminerà il certificato dall'insieme di credenziali delle chiavi con il metodo certificateClient.beginDeleteCertificate, un'altra operazione che richiede molto tempo.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Pulire le risorse
Quando non è più necessario, è possibile usare l'interfaccia della riga di comando di Azure o Azure PowerShell per rimuovere il Key Vault e il gruppo di risorse corrispondente.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Esempio di codice
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.");
}
}
Passaggi successivi
In questa guida di avvio rapido è stato creato un insieme di credenziali delle chiavi e quindi è stato creato, recuperato ed eliminato un certificato. Per altre informazioni su Key Vault e su come integrarla con le applicazioni, continuare con gli articoli seguenti.
- Leggere una Panoramica di Azure Key Vault
- Vedere la guida per sviluppatori Azure Key Vault
- Come Proteggere l'accesso a un insieme di credenziali delle chiavi
- Esaminare le procedure consigliate per la sicurezza specifiche dei certificati