Öğretici: Key Vault'de depolanan TLS sertifikaları ile Azure'da Bir Windows sanal makinesinde web sunucusunun güvenliğini sağlama

Şunlar için geçerlidir: ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri

Not

Şu anda bu belge yalnızca Genelleştirilmiş görüntüler için çalışmaktadır. Bu öğreticiyi Özelleştirilmiş disk kullanarak denerseniz bir hata alırsınız.

Web sunucularının güvenliğini sağlamak için, web trafiğini şifrelemek için aktarım katmanı güvenliği (TLS) sertifikası kullanılabilir. TLS sertifikaları Azure Key Vault'da depolanabilir ve Sertifikaların Azure'daki Windows sanal makinelerine (VM) güvenli bir şekilde dağıtılmasına olanak sağlar. Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Azure Key Vault oluşturma.
  • sertifika oluşturun veya Key Vault yükleyin.
  • Bir VM oluşturun ve IIS web sunucusunu yükleyin.
  • Sertifikayı VM'ye ekleyin ve IIS'yi bir TLS bağlamasıyla yapılandırın.

Azure Cloud Shell’i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell açmak için kod bloğunun sağ üst köşesinden CloudShell'i Aç'ı seçmeniz gerekir. İsterseniz https://shell.azure.com/powershell adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz. Kod bloklarını kopyalamak için Kopyala'yı seçin, bunları Cloud Shell yapıştırın ve çalıştırmak için Enter tuşuna basın.

Genel Bakış

Azure Key Vault, sertifikalar veya parolalar gibi şifreleme anahtarları ile gizli dizilerin güvenliğini sağlar. Key Vault, sertifika yönetimi işlemini kolaylaştırır ve bu sertifikalara erişen anahtarları denetiminizde tutmanıza olanak sağlar. Key Vault içinde otomatik olarak imzalanan bir sertifika oluşturabilir veya zaten sahip olduğunuz mevcut, güvenilen bir sertifikayı karşıya yükleyebilirsiniz.

Yerleşik sertifikaları içeren özel bir VM görüntüsü kullanmak yerine, çalışan bir VM'ye sertifika ekleyin. Bu işlem, dağıtım sırasında web sunucusuna en güncel sertifikaların yüklenip yüklenmediğini kontrol eder. Ayrıca, bir sertifikayı yeniler veya değiştirirseniz yeni ve özel bir VM görüntüsü oluşturmanız da gerekmez. Siz daha fazla VM oluşturduysanız en son sertifikalar otomatik olarak eklenir. Bu işlem sırasında, sertifikalar Azure platformundan ayrılmaz veya bir betikte, komut satırı geçmişinde veya şablonda kullanıma sunulmaz.

Azure Key Vault oluşturma

Key Vault ve sertifikalar oluşturabilmeniz için önce New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnek Doğu ABD konumunda myResourceGroupSecureWeb adlı bir kaynak grubu oluşturur:

$resourceGroup = "myResourceGroupSecureWeb"
$location = "East US"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Ardından New-AzKeyVault ile bir Key Vault oluşturun. Her Key Vault benzersiz bir ad gerektirir ve tümü küçük harf olmalıdır. öğesini aşağıdaki örnekte kendi benzersiz Key Vault adınızla değiştirinmykeyvault:

$keyvaultName="mykeyvault"
New-AzKeyVault -VaultName $keyvaultName `
    -ResourceGroup $resourceGroup `
    -Location $location `
    -EnabledForDeployment

Sertifika oluşturma ve Key Vault içinde depolama

Üretim kullanımı için Import-AzKeyVaultCertificate ile güvenilir bir sağlayıcı tarafından imzalanan geçerli bir sertifikayı içeri aktarmanız gerekir. Bu öğretici için aşağıdaki örnekte, New-AzKeyVaultCertificatePolicy'den varsayılan sertifika ilkesini kullanan Add-AzKeyVaultCertificate ile otomatik olarak imzalanan bir sertifikayı nasıl oluşturabileceğiniz gösterilmektedir.

$policy = New-AzKeyVaultCertificatePolicy `
    -SubjectName "CN=www.contoso.com" `
    -SecretContentType "application/x-pkcs12" `
    -IssuerName Self `
    -ValidityInMonths 12

Add-AzKeyVaultCertificate `
    -VaultName $keyvaultName `
    -Name "mycert" `
    -CertificatePolicy $policy 

Sanal makine oluşturma

VM için Get-Credential ile bir yönetici kullanıcı adı ve parola ayarlayın:

$cred = Get-Credential

Artık New-AzVM ile VM oluşturabilirsiniz. Aşağıdaki örnekte EastUS konumunda myVM adlı bir VM oluşturulur. Henüz yoksa, destekleyici ağ kaynakları oluşturulur. Güvenli web trafiği sağlanması için, cmdlet ayrıca 443 numaralı bağlantı noktasını açar.

# Create a VM
New-AzVm `
    -ResourceGroupName $resourceGroup `
    -Name "myVM" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNetworkSecurityGroup" `
    -PublicIpAddressName "myPublicIpAddress" `
    -Credential $cred `
    -OpenPorts 443

# Use the Custom Script Extension to install IIS
Set-AzVMExtension -ResourceGroupName $resourceGroup `
    -ExtensionName "IIS" `
    -VMName "myVM" `
    -Location $location `
    -Publisher "Microsoft.Compute" `
    -ExtensionType "CustomScriptExtension" `
    -TypeHandlerVersion 1.8 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server -IncludeManagementTools"}'

VM’nin oluşturulması birkaç dakika sürer. Son adımda, Set-AzVmExtension ile IIS web sunucusunu yüklemek için Azure Özel Betik Uzantısı kullanılır.

Key Vault’tan VM'ye sertifika ekleme

sertifikayı Key Vault bir VM'ye eklemek için Get-AzKeyVaultSecret ile sertifikanızın kimliğini alın. Add-AzVMSecret ile sertifikayı VM'ye ekleyin:

$certURL=(Get-AzKeyVaultSecret -VaultName $keyvaultName -Name "mycert").id

$vm=Get-AzVM -ResourceGroupName $resourceGroup -Name "myVM"
$vaultId=(Get-AzKeyVault -ResourceGroupName $resourceGroup -VaultName $keyVaultName).ResourceId
$vm = Add-AzVMSecret -VM $vm -SourceVaultId $vaultId -CertificateStore "My" -CertificateUrl $certURL | Update-AzVM

Sertifikayı kullanmak üzere IIS'yi yapılandırma

IIS yapılandırmasını güncelleştirmek için Set-AzVMExtension ile Özel Betik Uzantısı'nı yeniden kullanın. Bu güncelleştirme, Key Vault’tan IIS’ye eklenen sertifikayı uygular ve web bağlamasını yapılandırır:

$publicSettings = '{
    "fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/secure-iis.ps1"],
    "commandToExecute":"powershell -ExecutionPolicy Unrestricted -File secure-iis.ps1"
}'

Set-AzVMExtension -ResourceGroupName $resourceGroup `
    -ExtensionName "IIS" `
    -VMName "myVM" `
    -Location $location `
    -Publisher "Microsoft.Compute" `
    -ExtensionType "CustomScriptExtension" `
    -TypeHandlerVersion 1.8 `
    -SettingString $publicSettings

Güvenli web uygulamasını sınama

Get-AzPublicIPAddress ile VM'nizin genel IP adresini alın. Aşağıdaki örnek, daha önce oluşturulan myPublicIP için IP adresini alır:

Get-AzPublicIPAddress -ResourceGroupName $resourceGroup -Name "myPublicIPAddress" | select "IpAddress"

Artık bir web tarayıcısı açıp adres çubuğuna https://<myPublicIP> ifadesini girebilirsiniz. Otomatik olarak imzalanan sertifika kullandıysanız güvenlik uyarısını kabul etmek için, Ayrıntılar’ı seçin ve sonra Web sayfasına gidin:

Web tarayıcısı güvenlik uyarısının ekran görüntüsü.

Güvenli IIS siteniz, sonra aşağıdaki örnekte olduğu gibi görüntülenir:

Güvenli IIS sitesini gösteren tarayıcının ekran görüntüsü.

Sonraki adımlar

Bu öğreticide, Azure Key Vault'de depolanan bir TLS sertifikasıyla iis web sunucusunun güvenliğini sağladınız. Şunları öğrendiniz:

  • Azure Key Vault oluşturma.
  • sertifika oluşturun veya Key Vault yükleyin.
  • Bir VM oluşturun ve IIS web sunucusunu yükleyin.
  • Sertifikayı VM'ye ekleyin ve IIS'yi bir TLS bağlamasıyla yapılandırın.

Önceden oluşturulmuş sanal makine betiği örnekleri için bkz: