PowerShell : binding existing certificate in resource group - azure

Im trying to bind an exisiting certificate in the resource group in a custom domain.
New-AzWebAppSSLBinding -ResourceGroupName $webappname -WebAppName $webappname -Thumbprint "$newthumbprint" -Name "$customdomain"
When I Debug this the custom domain isn't found, But when I check the domain in microsoft azure under tls/ssl bindings, the domain is there with his old thumbprint.
When im using the original domain of the webapp (.azurewebsites.net) then it would say that there is a conflict because in the new certificate is that domain not registered and thats good because I dont want that.
Anyone know how I can change the thumbprint of customdomains in powershell instead of waste my time in microsoft azure application and doing it more then 100 times manually...

For the error, "custom domain isn't found" or "Hostname 'www.exmaple.com' does not exist", here are possible reasons:
You could check the certificate's subject name must match the domains used to access the Web App.
You should find the existing certificate under TLS/SSL settings---Private Key Certificates. When you run the PowerShell commands, ensure that you type the correct Hostname and matched Thumbprint.
The command is working well on my side.
In addition, If you update an SSL certificate from a local machine to the Azure web app, you can use this command.
New-AzWebAppSSLBinding -ResourceGroupName $webapprg -WebAppName $webappname -CertificateFilePath $PathToPfxFile -CertificatePassword $PlainTextPwd -Name $customdomain

Related

Wrong resource Group when I create a Managed Certificate in Azure

I would like to create a free Managed Certificate for my web app.
When I create the certificate I get the error Resource under Resource group xxx not found... Despite the error, the certificate is created, but also the inexistent resource group is created. The resource group is an old group I deleted times ago.
Everythings seems to be worked correctly but I would like to have a consistent situation.
I let you see in details:
What you see in the image above is my web app that is in the resource group dev-p...l-rg-westeu.
The I go in the TLS/SSL settings page (or in the TLS/SSL settings (preview) page.. nothing change, I get same error) and I create a managed certificate.. Here it is what I get:
I get the error that the web app xxx is not found under resource group dev-m...o-rg-westeu.. That's correct!! Because the web app is under the resource group dev-p...l-rg-westeu, not under dev-m...o-rg-westeu.
However the certificate is created, but under the wrong resource group:
Then I deleted the certificate. I deleted also the wrong resource group, because I do not need it and try and try again. Always same error. I also tryed to create the certificate via powershall:
New-AzWebAppCertificate -ResourceGroupName "dev-p...l-rg-westeu" -WebAppName "xxx" -Name "xxxx" -HostName "xxxx" -SslState 'SniEnabled'
As you can see I set explicitely the resource group name. But the certificate is always created in the wrong resource group. I debugged the command. It seems a cache exists. Can I clear it? Could it be the problem?
I also deleted and created a new web app. Nothing...
Can you help me please?
Thank you
We have tested in our environment with your given PowerShell command and can able to add in our own resource group as well.
We have only one resource group in which we created an app service
Run the below command for create an App Service Managed Certificate for the given WebApp in our resource group.
New-AzWebAppCertificate -ResourceGroupName "RGNAME" -WebAppName "appname" -Name "nameofCert" -HostName "www.name.com"
After running its added succesfully to our resource group.
Please make sure that you have provided the correct resource group where your app service is created. And you have deleted the old resource group successfully .
Once the the command successfully run make a refresh of the Azure portal then goto TLS/SSL settings (preview) binding and check the certificate.
OUTPUT DETAILS FOR REFERENCE:-
Certificate added to our own resource group
For more information please refer the below links:
MICROSOFT Q&A- Azure App Service creates certificate under defunct Resource Group as suggested by #SnehaAgrawal-MSFT & This discussion as well.

Unable to update SSL cert while using multiple basic listener using WAFV2 Azure App Gateway

I am having trouble uploading a new SSL pfx certificate onto my WAF V2 application gateway. I currently have 3 basic wildcard listeners setup (*.contoso.com *.fabrikam.com and *.adatum.com for example) and I would like to update the certificate associated with *.contoso.com.
The problem with using the UI is that if I attempt to update and save the certificate on the listener I get an error message indicating "This Basic HTTP listener cannot use the same frontend port as an existing listener". I understand this is likely because using multiple basic listeners is still in preview and can only be setup via powershell or ARM templates. I originally setup the gateway via ARM templates.
I instead attempted to update the listener's certificate using powershell. I first uploaded the pfx cert to a key vault. I then created a user managed identity with azure role assignments for both the app gateway and the key vault. After, I ran the following powershell commands from inside the portal's CLI but got the resulting error message.
PS > Select-AzureRmSubscription -Scope CurrentUser -SubscriptionName "Pay-As-You-Go"
PS > $appgw = Get-AzApplicationGateway -ResourceGroupName "myresourcegroup" -Name "myappgateway"
PS > $secret = Get-AzKeyVaultSecret -VaultName "mykeyvault" -Name "contoso-cert"
PS > $secretId = $secret.Id
PS > set-AzApplicationGatewaySSLCertificate -Name "contoso-cert" -ApplicationGateway $appgw -KeyVaultSecretId $secretId
PS > Set-AzApplicationGateway -ApplicationGateway $appgw
Set-AzApplicationGateway: Application Gateway 'myappgateway' requires a 'UserAssigned' Identity with 'get' access policy to the referenced KeyVault. Please provide so by using top level 'Identity' property.
Why am I unable to update the certificate on the basic listener using powershell? Is there any alternative option I can try in order to set the certificate? Please help
Pretty sure I came across this same issue when looking at the Wildcard Listeners Preview in App Gateway.
I don't have a test environment configured in such a way that I can try this for you at the moment, but I believe the solution was to create a Multisite HTTPS listener (instead of basic) with an arbitrary FQDN, and using the same SSL cert as the one you want to update. Then use that listener to update the SSL cert (you could probably even update the cert at the same time as you create the listener).
Let us know how you get on!

I want to be able to add/upload a certificate to my Azure Web App from my Azure KeyVault

I want to automate this process where I am uploading my certificate to my Web App.
I came across New-AzWebAppSSLBinding which enables upload but also binds the certificate to the web app.
I was trying it like so -
New-AzWebAppSSLBinding -ResourceGroupName $resourceGroupName -WebAppName $webAppName -Thumbprint "" -Name "certificatetest"
However, it gives an error because the domain is not set in the Web App.
I do not want to bind the certificate. I just want to be able to automate certificate upload through powershell. Is there an alternate way to do this?
I have already found this:
Upload Certificate to App Service from key Vault,
but it doesn't help much and I was hoping there is an ARM independent process through powershell?
According to my research, Azure PowerShell module does not provide any command used to upload SSL certificate to Azure Web APP. It just provides command used to upload SSL certicifate and bind SSL. So if you just want to upload SSL certificate to Azure Azure Web APP, I suggest you use Azure CLI. We can use CLI command az webapp config ssl upload to implement it. For more details, please refer to the document.
Besides, if you just want to implemrnt it with Azure PowerShell, please refer to the following script
Connect-AzAccount
#get app service plan which you want to associate the certificate with
$planName="stanQnA"
$planGraoup="stan"
$plan =Get-AzAppServicePlan -ResourceGroupName $planGraoup -Name $planName
#Get cert content
$pfxpassword="Password0123!"
$pfxpath="E:\Cert\example.pfx"
$pfxFileBytes = get-content $pfxpath -Encoding Byte
$pfxblob=[System.Convert]::ToBase64String($pfxFileBytes)
$properties=#{
pfxBlob =$pfxblob;
serverFarmId=$plan.Id;
password=$pfxpassword;
}
New-AzResource -Location $plan.Location -ResourceName "cert" -ResourceType "Microsoft.Web/certificates" -ResourceGroupName "jimtest"-Properties $properties -Force

Can you delete Microsoft.Web/certificates?

I'm creating LetsEncrypt SSL certificates for each of our Web App Services, then binding it to the Web App and subsequently trying to delete the previous one from our Azure resources. I notice Remove-AzureRmWebAppSSLBinding has a -DeleteCertificate flag after unbinding an SSL certificate, but I'd prefer not to unbind/delete until a new certificate has been obtained an bound.
Is there any other way that I can remove the certificates from Azure?
I found that I can delete any resource by ID using Remove-AzureRmResource.
Remove-AzureRmResource -ResourceId $resourceId -Force
This solves my problem for now!

Generate client certificate to service fabric cluster

According to this tutorial Create a Service Fabric cluster by using Azure Resource Manager , I created the server Self-Signed .pfx certificate.After that I enter certificate thumbprint,SourceVault,CertificateURL to azure portal.
What should I do to get client certificate,to enter its thumbprint to azure portal?
When you generated the client cert you should have generated the thumbprint at that point. If not then you should be able to install that cert locally on your machine (If it's not already) and using MMC go into the properties and find the thumbprint there to copy and paste, keep in mind it needs to have all spaces removed.
Did you uplooad the certificate to the keyvault?
Invoke-AddCertToKeyVault -SubscriptionId <guid> -ResourceGroupName westus-mykeyvault -Location "West US" -VaultName mywestusvault -CertificateName mycert -Password "<password>" -UseExistingCertificate -ExistingPfxFilePath "C:\path\to\mycertkey.pfx"
After that - you'll be able to fetch the thumbprint as specified in the guide.
Name : CertificateThumbprint
Value : E21DBC64B183B5BF355C34C46E03409FEEAEF58D
Name : SourceVault
Value : /subscriptions/<guid>/resourceGroups/westus-mykeyvault/providers/Microsoft.KeyVault/vaults/mywestusvault
Make sure to follow all the steps in the guide you listed and you should have your inputs.

Resources