Mulai Cepat - Pustaka klien sertifikat Azure Key Vault untuk Java (Sertifikat)

Mulailah dengan pustaka klien Azure Key Vault Certificate untuk Java. Ikuti langkah-langkah berikut untuk menginstal paket dan mencoba kode contoh untuk tugas dasar.

Tip

Jika Anda bekerja dengan sumber daya Sertifikat Azure Key Vault dalam aplikasi Spring, kami sarankan Anda mempertimbangkan Spring Cloud Azure sebagai alternatif. Spring Cloud Azure adalah proyek sumber terbuka yang menyediakan integrasi Spring tanpa hambatan dengan layanan Azure. Untuk mempelajari selengkapnya tentang Spring Cloud Azure, dan untuk melihat contoh menggunakan Sertifikat Key Vault, lihat Mengaktifkan HTTPS di Spring Boot dengan sertifikat Azure Key Vault.

Sumber daya tambahan:

Prasyarat

Mulai cepat ini mengasumsikan bahwa Anda menjalankan Azure CLI dan Apache Maven di jendela terminal Linux.

Menyiapkan

Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI untuk mengautentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

  1. Jalankan perintah login.

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.

    Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

  2. Masuk menggunakan kredensial akun Anda di browser.

Membuat aplikasi konsol Java baru

Di jendela konsol, gunakan perintah mvnuntuk membuat aplikasi konsol Java baru dengan nama akv-certificates-java.

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

Output dari pembuatan proyek akan terlihat seperti berikut:

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

Ubah direktori Anda ke folder akv-certificates-java/ yang baru dibuat.

cd akv-certificates-java

Pasang paket

Buka file pom.xml di editor teks Anda. Tambahkan elemen dependensi berikut ke grup dependensi.

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

Buat grup sumber daya dan brankas kunci

Mulai cepat ini menggunakan Azure key vault yang telah dibuat sebelumnya. Anda dapat membuat key vault dengan mengikuti langkah-langkah di mulai cepat Azure CLI, mulai cepat Azure PowerShell, atau mulai cepat portal Microsoft Azure.

Atau, Anda cukup menjalankan perintah Azure CLI atau Azure PowerShell di bawah ini.

Penting

Setiap key vault harus memiliki nama yang unik. Ganti <your-unique-keyvault-name> dengan nama brankas kunci Anda dalam contoh berikut.

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

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

Memberikan akses ke brankas kunci Anda

Untuk memberikan izin aplikasi Anda ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran menggunakan perintah Azure CLI 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>"

Ganti <app-id>, <subscription-id>, <resource-group-name> , dan <your-unique-keyvault-name> dengan nilai aktual Anda. <app-id> adalah ID Aplikasi (klien) dari aplikasi terdaftar Anda di Azure AD.

Atur variabel lingkungan

Aplikasi ini menggunakan nama brankas kunci Anda sebagai variabel lingkungan yang bernama KEY_VAULT_NAME.

Windows

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

Windows PowerShell

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

macOS atau Linux

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

Model objek

Pustaka klien Azure Key Vault Certificate untuk Java memungkinkan Anda mengelola sertifikat. Bagian Contoh kode menunjukkan cara membuat klien, membuat sertifikat, mengambil sertifikat, dan menghapus sertifikat.

Seluruh aplikasi konsol tercantum di bawah ini.

Contoh kode

Menambahkan instruksi

Tambahkan instruksi berikut di bagian atas kode Anda:

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;

Mengautentikasi dan membuat klien

Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. Menggunakan DefaultAzureCredential adalah pendekatan yang direkomendasikan untuk menerapkan koneksi tanpa kata sandi ke layanan Azure dalam kode Anda. DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan.

Dalam mulai cepat ini, DefaultAzureCredential autentikasi ke brankas kunci menggunakan kredensial pengguna pengembangan lokal yang masuk ke Azure CLI. Saat aplikasi disebarkan ke Azure, kode yang sama DefaultAzureCredential dapat secara otomatis menemukan dan menggunakan identitas terkelola yang ditetapkan ke App Service, Komputer Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.

Dalam contoh ini, nama brankas kunci Anda diperluas ke URI brankas kunci, dalam format https://<your-key-vault-name>.vault.azure.net. Untuk informasi selengkapnya tentang mengautentikasi ke brankas kunci, lihat Panduan Pengembang.

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

Menyimpan rahasia

Setelah aplikasi diautentikasi, Anda dapat memasukkan rahasia ke brankas sertifikat menggunakan metode certificateClient.beginCreateCertificate. Ini memerlukan nama untuk sertifikat dan kebijakan sertifikat - kami telah menetapkan nilai "myCertificate" ke certificateName variabel dalam sampel ini dan menggunakan kebijakan default.

Pembuatan sertifikat adalah operasi yang berlangsung lama. Anda dapat memeriksa kemajuannya atau menunggunya hingga selesai.

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

Anda dapat memperoleh sertifikat setelah pembuatan selesai melalui panggilan berikut:

KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();

Mengambil sertifikat

Kini Anda dapat menampilkan rahasia yang telah diatur sebelumnya dengan metode certificateClient.getCertificate.

KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

Anda sekarang dapat mengakses detail sertifikat yang diambil dengan operasi seperti retrievedCertificate.getName,retrievedCertificate.getProperties dll. Serta isinya retrievedCertificate.getCer.

Hapus sertifikat

Terakhir, mari kita hapus sertifikat dari kubah kunci Anda dengan metode certificateClient.beginDeleteCertificate ini, yang juga merupakan operasi jangka panjang.

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

Membersihkan sumber daya

Jika sudah tidak diperlukan, Anda dapat menggunakan Azure CLI atau Azure PowerShell untuk menghapus brankas kunci dan grup sumber daya terkait.

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

Kode Sampel

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

Langkah berikutnya

Dalam panduan mulai cepat ini, Anda membuat brankas kunci, membuat sertifikat, mengambilnya, lalu menghapusnya. Untuk mempelajari selengkapnya tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lihat artikel di bawah ini.