Hızlı Başlangıç: Java için Azure Key Vault Sertifikası istemci kitaplığı (Sertifikalar)
Java için Azure Key Vault Sertifikası istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için aşağıdaki adımları izleyin ve temel görevler için örnek kodu deneyin.
İpucu
Spring uygulamasında Azure Key Vault Sertifikaları kaynaklarıyla çalışıyorsanız Spring Cloud Azure'ı alternatif olarak değerlendirmenizi öneririz. Spring Cloud Azure, Azure hizmetleriyle sorunsuz Spring tümleştirmesi sağlayan açık kaynak bir projedir. Spring Cloud Azure hakkında daha fazla bilgi edinmek ve Key Vault Sertifikalarını kullanan bir örneği görmek için bkz . Azure Key Vault sertifikalarıyla Spring Boot'ta HTTPS'yi etkinleştirme.
Ek kaynaklar:
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Java Development Kit (JDK) sürüm 8 veya üzeri
- Apache Maven
- Azure CLI
Bu hızlı başlangıçta Azure CLI ve Apache Maven'ı linux terminal penceresinde çalıştırdığınız varsayılır.
Ayarlama
Bu hızlı başlangıç, Azure Hizmetleri'nde kullanıcının kimliğini doğrulamak için Azure CLI ile Azure Kimlik kitaplığını kullanmaktır. Geliştiriciler, çağrılarının kimliğini doğrulamak için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için bkz . Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama.
Azure'da oturum açma
login
komutunu çalıştırın.az login
CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Yeni java konsol uygulaması oluşturma
Konsol penceresinde komutunu kullanarak mvn
adlı akv-certificates-java
yeni bir Java konsol uygulaması oluşturun.
mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
-DartifactId=akv-certificates-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Proje oluşturulurken elde edilecek çıkış şuna benzer olacaktır:
[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] ------------------------------------------------------------------------
Dizininizi yeni oluşturulan akv-certificates-java/
klasörle değiştirin.
cd akv-certificates-java
paketini yükleyin
metin düzenleyicinizde pom.xml dosyasını açın. Bağımlılık grubuna aşağıdaki bağımlılık öğelerini ekleyin.
<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>
Kaynak grubu ve anahtar kasası oluşturma
Bu hızlı başlangıçta önceden oluşturulmuş bir Azure anahtar kasası kullanılır. Azure CLI hızlı başlangıcı, Azure PowerShell hızlı başlangıcı veya Azure portalı hızlı başlangıcı adımlarını izleyerek anahtar kasası oluşturabilirsiniz.
Alternatif olarak, bu Azure CLI veya Azure PowerShell komutlarını çalıştırabilirsiniz.
Önemli
Her anahtar kasasının benzersiz bir adı olmalıdır. Aşağıdaki örneklerde unique-keyvault-name> değerini anahtar kasanızın adıyla değiştirin<.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Anahtar kasanıza erişim izni verme
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için az role assignment create Azure CLI komutunu kullanarak "Kullanıcı Asıl Adı" (UPN) öğesine bir rol atayın.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
upn>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).
Ortam değişkenlerini belirleme
Bu uygulama anahtar kasanızın adını adlı KEY_VAULT_NAME
bir ortam değişkeni olarak kullanıyor.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS veya Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Nesne modeli
Java için Azure Key Vault Sertifikası istemci kitaplığı sertifikaları yönetmenize olanak tanır. Kod örnekleri bölümünde istemci oluşturma, sertifika oluşturma, sertifika alma ve sertifika silme işlemi gösterilir.
Konsol uygulamasının tamamı aşağıdadır.
Kod örnekleri
Yönerge ekleme
Kodunuzun en üstüne aşağıdaki yönergeleri ekleyin:
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;
Kimlik doğrulaması yapma ve istemci oluşturma
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır. DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.
Bu hızlı başlangıçta, DefaultAzureCredential
Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential
kod App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulabilir ve kullanabilir. Daha fazla bilgi için bkz . Yönetilen Kimliğe Genel Bakış.
Bu örnekte, anahtar kasanızın adı biçiminde https://<your-key-vault-name>.vault.azure.net
anahtar kasası URI'sine genişletilir. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.
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();
Gizli dizi kaydetme
Uygulamanızın kimliği doğrulandıktan sonra, yöntemini kullanarak certificateClient.beginCreateCertificate
anahtar kasanızda bir sertifika oluşturabilirsiniz. Bunun için sertifika için bir ad ve sertifika ilkesi gerekir. Bu örnekteki değişkene certificateName
"myCertificate" değerini atadık ve varsayılan ilkeyi kullandık.
Sertifika oluşturma, ilerleme durumunu yoklayabileceğiniz veya tamamlanmasını bekleyebileceğiniz uzun süre çalışan bir işlemdir.
SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();
Oluşturma işlemi tamamlandıktan sonra aşağıdaki çağrı aracılığıyla sertifikayı alabilirsiniz:
KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();
Sertifika alma
Artık yöntemiyle daha önce oluşturulmuş sertifikayı certificateClient.getCertificate
alabilirsiniz.
KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);
Artık , vb. işlemleriyle retrievedCertificate.getName
retrievedCertificate.getProperties
alınan sertifikanın ayrıntılarına erişebilirsiniz. içeriğinin retrievedCertificate.getCer
yanı sıra.
Sertifika silme
Son olarak, uzun süre çalışan bir işlem olan yöntemiyle anahtar kasanızdan sertifikayı certificateClient.beginDeleteCertificate
silelim.
SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();
Kaynakları temizleme
Artık gerekli olmadığında, anahtar kasanızı ve ilgili kaynak grubunu kaldırmak için Azure CLI veya Azure PowerShell'i kullanabilirsiniz.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Örnek kod
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.");
}
}
Sonraki adımlar
Bu hızlı başlangıçta bir anahtar kasası oluşturdunuz, bir sertifika oluşturdunuz, sertifikayı alıp sildiniz. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.