教學課程:使用儲存在 Key Vault 中的 TLS 憑證保護 Azure 中 Windows 虛擬機上的網頁伺服器
適用於:✔️ Windows VM ✔️ 彈性擴展集
注意
此文件目前僅適用於一般化映像。 如果您嘗試使用特製化磁碟進行本教學課程,您會收到錯誤訊息。
若要保護網頁伺服器,可以使用傳輸層安全性 (TLS) 憑證來加密網路流量。 TLS 憑證可以儲存在 Azure Key Vault 中,並允許將憑證安全部署至 Azure 中的 Windows 虛擬機器(VM)。 在本教學課程中,您將了解如何:
- 建立 Azure Key Vault。
- 產生或上傳憑證至 Key Vault。
- 建立 VM 並安裝 IIS 網頁伺服器。
- 將憑證插入 VM 並使用 TLS 繫結來設定 IIS。
啟動 Azure Cloud Shell
Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。
若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [開啟 Cloudshell] 即可。 您也可以移至 https://shell.azure.com/powershell ,從另一個瀏覽器索引標籤啟動 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將它們貼到 Cloud Shell 中,然後按 Enter 鍵加以執行。
概觀
Azure Key Vault 會保護密碼編譯金鑰和祕密,像是憑證或密碼。 Key Vault 有助於簡化憑證管理程序,並可讓您掌控用來存取這些憑證的金鑰。 您可以在 Key Vault 內建立自我簽署憑證,或上傳您目前已經擁有的受信任憑證。
您不必使用包含了內建憑證的自訂 VM 映像,而是要將憑證插入執行中的 VM。 此程序可確保您在部署期間安裝在網頁伺服器上的憑證會是最新的。 如果您更新或取代憑證,您就不必另外再建立新的自訂 VM 映像。 當您建立更多 VM 時,系統會自動插入最新的憑證。 在整個過程中,憑證絕對不會離開 Azure 平台,或在指令碼、命令列記錄或範本中公開。
建立 Azure Key Vault
建立 Key Vault 和憑證之前,請先使用 New-AzResourceGroup 來建立資源群組。 下列範例會在「美國東部」位置建立名為 myResourceGroupSecureWeb 的資源群組:
$resourceGroup = "myResourceGroupSecureWeb"
$location = "East US"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
接下來,使用 New-AzKeyVault 建立金鑰保存庫。 每個 Key Vault 需要唯一的名稱,而且應該全部小寫。 在下列範例中,以您自己的唯一 Key Vault 名稱取代 mykeyvault
:
$keyvaultName="mykeyvault"
New-AzKeyVault -VaultName $keyvaultName `
-ResourceGroup $resourceGroup `
-Location $location `
-EnabledForDeployment
產生憑證並儲存於 Key Vault
若要在生產環境中使用,您應該使用 Import-AzKeyVaultCertificate 來匯入由受信任的提供者所簽署的有效憑證。 在本教學課程中,下列範例示範如何使用 Add-AzKeyVaultCertificate 來產生自我簽署憑證,而且該憑證會使用透過 New-AzKeyVaultCertificatePolicy 所得到的預設憑證原則。
$policy = New-AzKeyVaultCertificatePolicy `
-SubjectName "CN=www.contoso.com" `
-SecretContentType "application/x-pkcs12" `
-IssuerName Self `
-ValidityInMonths 12
Add-AzKeyVaultCertificate `
-VaultName $keyvaultName `
-Name "mycert" `
-CertificatePolicy $policy
建立虛擬機器
使用 Get-credential 來設定 VM 的系統管理員使用者名稱和密碼:
$cred = Get-Credential
現在您可以使用 New-AzVM 建立 VM。 下列範例會在 EastUS 位置中建立名為 myVM 的 VM。 如果它們尚不存在,則會建立支援網路資源。 為了允許安全 Web 流量,此 Cmdlet 也會開啟連接埠 443。
# 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。 最後一個步驟會使用 Azure 自訂指令碼擴充功能,利用 Set-AzVmExtension 來安裝 IIS 網頁伺服器。
將憑證從 Key Vault 新增至 VM
若要將憑證從 Key Vault 新增至 VM,請使用 Get-AzKeyVaultSecret 來取得憑證的識別碼。 使用 Add-AzVMSecret 將憑證新增至 VM:
$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
設定 IIS 以使用憑證
再次搭配 Set-AzVMExtension 來使用自訂指令碼擴充功能,以更新 IIS 組態。 這次的更新會套用從 Key Vault 插入到 IIS 的憑證,並設定 Web 繫結:
$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
測試安全的 Web 應用程式
使用 Get-AzPublicIPAddress 取得 VM 的公用 IP 位址。 下列範例會取得稍早建立之 myPublicIP
的 IP 位址︰
Get-AzPublicIPAddress -ResourceGroupName $resourceGroup -Name "myPublicIPAddress" | select "IpAddress"
現在,您可以開啟 Web 瀏覽器,並在網址列輸入 https://<myPublicIP>
。 若要在使用自我簽署憑證時接受安全性警告,請依序按一下 [詳細資料] 與 [繼續瀏覽網頁]。
接著會顯示受保護的 IIS 網站,如下列範例所示:
下一步
在本教學課程中,您已使用儲存在 Azure Key Vault 中的 TLS 憑證來保護 IIS 網頁伺服器。 您已了解如何︰
- 建立 Azure Key Vault。
- 產生或上傳憑證至 Key Vault。
- 建立 VM 並安裝 IIS 網頁伺服器。
- 將憑證插入 VM 並使用 TLS 繫結來設定 IIS。
如需預先建置的虛擬機腳本範例,請參閱: