Loading...

Simplify certificate management of on-prem IIS server with Azure Arc & Azure Key Vault VM extension

Simplify certificate management of on-prem IIS server with Azure Arc & Azure Key Vault VM extension

One common question which I’ve come across is certificate management for web servers. Usually when servers are hosted on Azure there are ways like storing certificates and secrets in Azure Key vault is a viable solution. I’ve come across customers who’re running servers in hybrid and few servers would still remain on-premises because of dependencies. For these web servers managing certificates is a costly affair. Common practice which I’ve seen is admin sharing the certificate with application team on some file share. This has few disadvantages.

 

  1. Storing the certificate in file share or on email.
  2. Based on the number of application team a lot of team gets access to certificates.
  3. Manually applying updated certificates once the expiry is near also finding which all servers this certificate is being used is a pain if you’ve a big environment with lots of web service.

One better way to handle this scenario is to Store certificate in Azure Key vault centrally and Arc Enable the web server. One last step which will do the magic is Azure Key vault VM Extension. Which can be enabled on Arc Server as extension.

 

This setup provides the advantages below.

  1. All the certificates are stored centrally in Azure Key Vault which is protected.
  2. No application team has got manual access to certificates, on-prem server will pull the certificate based on the managed identity assigned via Azure Arc.
  3. Once the cert expiry is near Admin/app team need to just goto Azure Key Vault and update the certificate with the latest version. Azure Key vault VM Extension will pull the latest certificate and apply the same to the website.

 

 

 

$Settings = @{ secretsManagementSettings = @{ observedCertificates = @( "https://keyvaultname.vault.azure.net/secrets/certificatename" # Add more here in a comma separated list ) certificateStoreLocation = "LocalMachine" certificateStoreName = "My" pollingIntervalInS = "3600" # every hour } authenticationSettings = @{ # Don't change this line, it's required for Arc enabled servers msiEndpoint = "http://localhost:40342/metadata/identity" } } $ResourceGroup = "ARC_SERVER_RG_NAME" $ArcMachineName = "ARC_SERVER_NAME" $Location = "ARC_SERVER_LOCATION (e.g. eastus2)" New-AzConnectedMachineExtension -ResourceGroupName $ResourceGroup -MachineName $ArcMachineName -Name "KeyVaultForWindows" -Location $Location -Publisher "Microsoft.Azure.KeyVault" -ExtensionType "KeyVaultForWindows" -Setting (ConvertTo-Json $Settings)

 

 

 

 

For auto renewal of certificate, we’ll need to enable IIS Rebind.

Picture1.jpg

 

 

This is how Arc VM Extension looks like when it’s enabled.
Picture2.jpg

 


Assigning permission to Arc server to fetch the certificate from keyvault.
You can use access policy on Keyvault as well, it’s supported.
Picture3.jpg

 


Versions of the certificate/new certificate can be uploaded from key vault certificate blade and looks like below.
Picture4.jpg


If you’re renewing certificates and wanted to see if certificates are getting pulled down properly or not you can check error logs located here.
C:\ProgramData\Guestconfig\extension_logs\Microsoft.Azure.Keyvault.keyvaultforwindows
Picture5.jpg

If you’re running Azure VM similar thing can be achieved :

https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/key-vault-windows

 

Cert Rebind in IIS:

https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-85/certificate-rebind-in-iis85

Published on:

Learn more
Azure Arc Blog articles
Azure Arc Blog articles

Azure Arc Blog articles

Share post:

Related posts

Top Azure Services Every Dynamics 365 Developer Must Learn

Introduction Microsoft Dynamics 365 has evolved far beyond being just a Customer Relationship Management (CRM) or Enterprise Resource Planning...

1 day ago

Creating AI-Powered Workflows Using Power Automate and Azure AI

Introduction Artificial Intelligence is revolutionising business automation by enabling organisations to build workflows that not only automat...

2 days ago

Azure Developer CLI (azd) July 2026

This is the July round-up for the Azure Developer CLI (azd). Five releases shipped since the last post: 1.27.0, 1.27.1, 1.28.0, 1.28.1, and 1....

3 days ago

Azure vs AWS: Which Cloud Platform Should You Learn in 2026?

Introduction Cloud computing has become the foundation of modern digital transformation. From startups to Fortune 500 companies, organizations...

3 days ago

Building Enterprise Applications with .NET 10 and Azure Cloud

Introduction As businesses continue their digital transformation journey, enterprise applications are expected to be more intelligent, scalabl...

3 days ago

Azure Tops $100 Billion As Microsoft Reports FY26 Q4 Results

On July 29, Microsoft released their FY26 Q4 results. We learned that Microsoft 365 Copilot has 30 million paid seats, but that's still less t...

4 days ago

Azure SDK Release (July 2026)

Azure SDK releases every month. In this post, you'll find this month's highlights and release notes. The post Azure SDK Release (July 2026) ap...

4 days ago

Azure OpenAI Service: Complete Guide for Beginners

Introduction Artificial Intelligence is transforming how businesses build software, automate workflows and deliver personalised customer exper...

4 days ago
Stay up to date with latest Microsoft Dynamics 365 and Power Platform news!
* Yes, I agree to the privacy policy