我是Azure的新手,需要创建一个Azure应用程序来验证连接到Exchange Online(EXO 3)并为客户端收集所有Exchange通讯组列表的脚本。
脚本本身运行良好,但我需要它作为域控制器上的计划任务运行,因此这需要Azure身份验证。我在DC上创建了一个基本的自签名cer文件,但因为它没有属性Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider'
。我认为.cer文件不会上传到Azure。
我得到
添加证书失败。错误详细信息:上载以下类型之一的证书(公钥):.cer、.pem、.CRT
我的证书是带密码的.cer。根据我在此错误和this MS article中看到的信息,Azure似乎需要某些属性,包括“提供程序”,而据我所知,此提供程序应该是“Microsoft增强型RSA和AES加密提供程序”。
当我在W2012 R2域控制器上运行下面的脚本时,powershell无法理解“提供程序”部分,并在主题中抛出错误:
$automationAccount = 'GetDistributionLists'
$certExpiryMonths = 24
$certPfxPassword = 'blahblah'
$certExportPath = 'C:\'
$resourceGroup = 'Name of Azure App'
$location = "UK"
$certPassword = ConvertTo-SecureString $certPfxPassword -AsPlainText -Force
#Generate SSL certificate
Write-Host "Generate self signed certificate for - $automationAccount"
$selfSignedCertSplat = @{
DnsName = $automationAccount
Subject = $automationAccount
CertStoreLocation = 'cert:\CurrentUser\My'
KeyExportPolicy = 'Exportable'
Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider'
NotAfter = (Get-Date).AddMonths($certExpiryMonths)
HashAlgorithm = 'SHA256'
}
$selfSignedCert = New-SelfSignedCertificate @selfSignedCertSplat
#Export SSL certificate to file
Write-Host "Export self signed certificate to folder - $certExportPath"
$certThumbPrint = 'cert:\CurrentUser\My\' + $selfSignedCert.Thumbprint
Export-Certificate -Cert $certThumbPrint -FilePath "$certExportPath\$automationAccount.cer" -Type CERT | Write-Verbose
我得到这个错误:
New-SelfSignedCertificate : A parameter cannot be found that matches parameter name 'Provider'.
At \\dfs\users\userfolders\username\Desktop\GetDistributionGroupCertAzure.ps1:22 char:45
+ $selfSignedCert = New-SelfSignedCertificate @selfSignedCertSplat
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-SelfSignedCertificate], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.CertificateServices.Commands.NewSelfSignedCertificateCommand
有人知道如何解决这个问题吗?我需要在DC上创建证书(我想,因为这是计划任务运行的地方-但我可能是错误的..),但对我来说,这似乎是某种Powershell版本/模块限制,阻止了它的工作。
有谁能帮我解释一下如何让它工作吗?我能在其他地方创建它,然后直接导入到DC上吗?
Powershell version:
Name Value
---- -----
PSVersion 5.1.14409.1029
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1029
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
1条答案
按热度按时间6za6bjd01#
看来我想明白了!
简单地说,我必须用本地机器上的更高OS/Powershell版本在本地创建证书,然后导出到DC和Azure...
哦。