Azure Key Vault’da Depolanan TLS / SSL Sertifikaları ile Bir Web Sunucusunu Güvenli Hale Getirme
Web trafiğini güvenli hale getirmek için, SSL olarak bilinen bir Aktarım Katmanı Güvenliği (TLS) sertifikası, web trafiğini şifrelemek için kullanılabilir. Bu TLS / SSL sertifikaları Azure Key Vault’da saklanabilir ve sertifikaların Azure’daki Windows sanal makinelerine (VM) güvenli dağıtımı için kullanılabilir.
Azure Key Vault, sertifikalar veya parolalar gibi kriptografik anahtarları ve sırları korur. Key Vault, sertifika yönetimi sürecini kolaylaştırmaya yardımcı olur ve bu sertifikalara erişen anahtarların kontrolünü korumanıza olanak tanır. Key Vault içinde kendinden imzalı bir sertifika oluşturabilir veya zaten sahip olduğunuz mevcut, güvenilir bir sertifikayı yükleyebilirsiniz.
Sertifikaları içeren özel bir VM görüntüsü kullanmak yerine, çalışan bir VM’e sertifika enjekte edersiniz. Bu işlem, en güncel sertifikaların dağıtım sırasında bir web sunucusuna yüklenmesini sağlar. Bir sertifikayı yeniler veya değiştirirseniz, yeni bir özel VM görüntüsü de oluşturmanız gerekmez. Ek VM’ler oluştururken en son sertifikalar otomatik olarak enjekte edilir. Tüm süreç boyunca, sertifikalar hiçbir zaman Azure platformundan ayrılmaz veya bir komut dosyasına, komut satırı geçmişine veya şablona maruz kalmaz.
- Bir Key Vault ve sertifikalar oluşturmadan önce, New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnek, West Europe konumunda OnderRGWeb adlı bir kaynak grubu oluşturur:
$resourceGroup = "OnderRGWeb"
$location = "West Europe"
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. Aşağıdaki örnekte onderkv yerine kendi benzersiz Key Vault adınızı yazın:
$keyvaultName="onderkv"
New-AzKeyVault -VaultName $keyvaultName `
-ResourceGroup $resourceGroup `
-Location $location `
-EnabledForDeployment
- Production kullanımı için, Import-AzKeyVaultCertificate ile güvenilir sağlayıcı tarafından imzalanmış geçerli bir sertifika almanız gerekir. Bu makale için, aşağıdaki örnek New-AzKeyVaultCertificatePolicy’den varsayılan sertifika ilkesini kullanan Add-AzKeyVaultCertificate ile kendinden imzalı bir sertifika nasıl oluşturabileceğinizi görebilirsiniz.
$policy = New-AzKeyVaultCertificatePolicy `
-SubjectName "CN=www.msazureturkey.com" `
-SecretContentType "application/x-pkcs12" `
-IssuerName Self `
-ValidityInMonths 12
Add-AzKeyVaultCertificate `
-VaultName $keyvaultName `
-Name "mycert" `
-CertificatePolicy $policy
- Şimdi Cloud Shell kullanarak VM’i oluşturabiliriz.
- Get-Credential ile VM için bir yönetici kullanıcı adı ve parolası belirleyin:
$cred = Get-Credential
- Artık VM’i New-AzVM ile oluşturabilirsiniz. Aşağıdaki örnek, West Europe konumunda OnderVM adlı bir VM oluşturur. Henüz mevcut değilse, destekleyici ağ kaynakları oluşturulur. Güvenli web trafiğine izin vermek için, cmdlet 443 numaralı bağlantı noktasını da açar.
# Create a VM
New-AzVm `
-ResourceGroupName $resourceGroup `
-Name "OnderVM" `
-Location $location `
-VirtualNetworkName "OnderVnet" `
-SubnetName "OnderSubnet" `
-SecurityGroupName "OnderNSG" `
-PublicIpAddressName "OnderPIP" `
-Credential $cred `
-OpenPorts 443
# Use the Custom Script Extension to install IIS
Set-AzVMExtension -ResourceGroupName $resourceGroup `
-ExtensionName "IIS" `
-VMName "OnderVM" `
-Location $location `
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server -IncludeManagementTools"}'
- VM’in oluşturulması birkaç dakika sürer.
- Sertifikayı Key Vault’ndan bir VM’e eklemek için, Get-AzKeyVaultSecret ile sertifikanızın kimliğini alın. Sertifikayı Add-AzVMSecret ile VM’e ekleyin:
$certURL=(Get-AzKeyVaultSecret -VaultName $keyvaultName -Name "mycert").id
$vm=Get-AzVM -ResourceGroupName $resourceGroup -Name "OnderVM"
$vaultId=(Get-AzKeyVault -ResourceGroupName $resourceGroup -VaultName $keyVaultName).ResourceId
$vm = Add-AzVMSecret -VM $vm -SourceVaultId $vaultId -CertificateStore "My" -CertificateUrl $certURL
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
- IIS yapılandırmasını güncelleştirmek için Özel Komut Dosyası Uzantısını Set-AzVMExtension ile yeniden kullanın. Bu güncelleştirme, Key Vault’dan enjekte edilen sertifikayı IIS’ye uygular ve web binding’i 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 "OnderVM" `
-Location $location `
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-SettingString $publicSettings
- Artık bir web tarayıcısı açabilir ve adres çubuğuna https://<PublicIP> girebilirsiniz. Kendinden imzalı bir sertifika kullandıysanız güvenlik uyarısını kabul etmek için Ayrıntılar’ı ve ardından web sayfasına git’i seçin:
- Güvenli IIS web siteniz aşağıdaki örnekte olduğu gibi görüntülenir: