Rychlý start: Klientská knihovna certifikátů služby Azure Key Vault pro Javu (certifikáty)
Začínáme s klientskou knihovnou certifikátů služby Azure Key Vault pro Javu Podle následujících kroků nainstalujte balíček a vyzkoušejte ukázkový kód pro základní úlohy.
Tip
Pokud pracujete s prostředky certifikátů služby Azure Key Vault v aplikaci Spring, doporučujeme jako alternativu zvážit Spring Cloud Azure . Spring Cloud Azure je opensourcový projekt, který poskytuje bezproblémovou integraci Spring se službami Azure. Další informace o Službě Spring Cloud Azure a příklad použití certifikátů služby Key Vault najdete v tématu Povolení HTTPS ve Spring Bootu s certifikáty služby Azure Key Vault.
Další prostředky:
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Java Development Kit (JDK) verze 8 nebo novější
- Apache Maven
- Azure CLI
V tomto rychlém startu se předpokládá, že používáte Azure CLI a Apache Maven v okně terminálu s Linuxem.
Nastavení
Tento rychlý start používá knihovnu identit Azure s Azure CLI k ověření uživatele ve službách Azure. Vývojáři můžou také k ověřování volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.
Přihlášení k Azure
Spusťte příkaz
login
.az login
Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.
V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.
Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.
Vytvoření nové konzolové aplikace v Javě
V okně konzoly pomocí mvn
příkazu vytvořte novou konzolovou aplikaci Java s názvem akv-certificates-java
.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Výstup z generování projektu bude vypadat přibližně takto:
[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] ------------------------------------------------------------------------
Změňte adresář na nově vytvořenou akv-certificates-java/
složku.
cd akv-certificates-java
Nainstalujte balíček .
Otevřete soubor pom.xml v textovém editoru. Do skupiny závislostí přidejte následující prvky závislostí.
<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>
Vytvoření skupiny prostředků a trezoru klíčů
V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Trezor klíčů můžete vytvořit pomocí kroků v rychlém startu Azure CLI, rychlém startu Azure PowerShellu nebo rychlém startu webu Azure Portal.
Alternativně můžete spustit tyto příkazy Azure CLI nebo Azure PowerShellu.
Důležité
Každý trezor klíčů musí mít jedinečný název. Nahraďte <název-unique-keyvault-name> názvem vašeho trezoru klíčů v následujících příkladech.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Udělení přístupu k trezoru klíčů
Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI az role assignment create.
az role assignment create --role "Key Vault Certificate Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Nahraďte <upn>, <subscription-id>, <resource-group-name> a <your-unique-keyvault-name> skutečnými hodnotami. Hlavní název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např username@domain.com. ).
Nastavení proměnných prostředí
Tato aplikace používá název trezoru klíčů jako proměnnou prostředí s názvem KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS nebo Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektový model
Klientská knihovna certifikátů služby Azure Key Vault pro Javu umožňuje spravovat certifikáty. Část Příklady kódu ukazuje, jak vytvořit klienta, vytvořit certifikát, načíst certifikát a odstranit certifikát.
Celá konzolová aplikace je níže.
Příklady kódu
Přidání direktiv
Na začátek kódu přidejte následující direktivy:
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;
Ověření a vytvoření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití defaultAzureCredential je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential
podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.
V tomto rychlém startu DefaultAzureCredential
se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential
kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.
V tomto příkladu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://<your-key-vault-name>.vault.azure.net
. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.
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();
Uložení tajného kódu
Teď, když je vaše aplikace ověřená, můžete v trezoru klíčů vytvořit certifikát pomocí této certificateClient.beginCreateCertificate
metody. To vyžaduje název certifikátu a zásady certifikátu – přiřadili jsme hodnotu myCertificate proměnné certificateName
v této ukázce a použili výchozí zásadu.
Vytvoření certifikátu je dlouhotrvající operace, pro kterou se můžete dotazovat na jeho průběh nebo počkat, až se dokončí.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Jakmile se vytvoření dokončí, můžete certifikát získat pomocí následujícího volání:
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Načtení certifikátu
Teď můžete pomocí metody načíst dříve vytvořený certifikát certificateClient.getCertificate
.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
Teď můžete získat přístup k podrobnostem načteného certifikátu pomocí operací, jako je retrievedCertificate.getName
, retrievedCertificate.getProperties
atd. Stejně jako jeho obsah retrievedCertificate.getCer
.
Odstranění certifikátu
Nakonec odstraníme certifikát z trezoru klíčů pomocí certificateClient.beginDeleteCertificate
metody, což je také dlouhotrvající operace.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Vyčištění prostředků
Pokud už nepotřebujete, můžete pomocí Azure CLI nebo Azure PowerShellu odebrat trezor klíčů a odpovídající skupinu prostředků.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Ukázkový kód
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.");
}
}
Další kroky
V tomto rychlém startu jste vytvořili trezor klíčů, vytvořili certifikát, načetli ho a pak ho odstranili. Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v následujících článcích.
- Přehled služby Azure Key Vault
- Prohlédni si průvodce vývojářem ve službě Azure Key Vault.
- Zabezpečení přístupu k trezoru klíčů