ssl Win2012R2新的自签名证书:找不到与参数名称“Provider”匹配的参数

xzv2uavs  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(257)

我是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
6za6bjd0

6za6bjd01#

看来我想明白了!
简单地说,我必须用本地机器上的更高OS/Powershell版本在本地创建证书,然后导出到DC和Azure...
哦。

相关问题