Bicep/shared/key-vault-with-cert.ps1 (34 lines of code) (raw):

Param( [Alias("v")] [string] $vaultName, [Alias("c")] [string] $commonName = "HPCPackCommunication", [Alias("n")] [string] $certName = "HPCPackCommunication" ) $ErrorActionPreference = 'Stop' if($commonName.StartsWith("CN=")) { $subjectName = $commonName } else { $subjectName = "CN=$commonName" } "Create a self-signed certificate '$certName' in the Azure Key Vault '$vaultName' with subject name '$subjectName'." | Out-Default $certPolicy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName $subjectName -IssuerName "Self" -ValidityInMonths 60 -ReuseKeyOnRenewal -KeyUsage DigitalSignature, KeyAgreement, KeyEncipherment, KeyCertSign -Ekus "1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2" Add-AzKeyVaultCertificate -VaultName $vaultName -Name $certName -CertificatePolicy $certPolicy "Waiting for the certificate to be ready..." | Out-Default Start-Sleep -Seconds 5 $keyVaultCert = Get-AzKeyVaultCertificate -VaultName $vaultName -Name $certName while(!$keyVaultCert.Thumbprint -or !$keyVaultCert.SecretId) { Start-Sleep -Seconds 2 $keyVaultCert = Get-AzKeyVaultCertificate -VaultName $vaultName -Name $certName } "The Azure Key Vault certificate '$certName' is ready for use." | Out-Default $DeploymentScriptOutputs = @{ thumbprint = $keyVaultCert.Thumbprint url = $keyVaultCert.SecretId } $DeploymentScriptOutputs | Out-Default