Öğ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:
Güvenli IIS siteniz, sonra aşağıdaki örnekte olduğu gibi görüntülenir:
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: