使用 Powershell,我正在尝试使用可以导出的私钥创建自签名 ssl 证书。我已经阅读并遵循了各种教程,但最终结果始终是没有导出任何私有的。我正在使用 Powershell,因为服务器运行的是 Windows Server 2016 Core 版本。我已经尝试从远程计算机使用证书 MMC 控制台,但是在远程执行该操作时似乎并非所有功能都可用。无论如何,我所遵循的各种教程都谈到了导出私钥的能力,但是我还没有找到一个具体的代码示例来实现这项工作。这是我一直在尝试的代码:
$todaydt = Get-Date
$5years = $todaydt.AddYears(5)
$selfSignedRootCA = New-SelfSignedCertificate -DnsName SelfSignedRootCA -notafter $5years -CertStoreLocation Cert:\LocalMachine\My\ -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeySpec KeyExchange -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm 'RSA' -HashAlgorithm 'SHA256' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider'
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "myserver.test" -notafter $5years -Signer $selfSignedRootCA -KeyUsage KeyEncipherment,DigitalSignature
$CertPassword = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
Export-PfxCertificate -Cert cert:\LocalMachine\My\REDACTED-THUMBPRINT -FilePath C:\test.pfx -Password $CertPassword
我的研究表明,最常见的原因是用于创建证书的证书模板不允许导出私钥,因此按照这些建议,我复制了现有的证书模板并确保将其配置为允许导出密钥。但是,我不知道如何/在哪里在上述任何命令中指定新创建的模板。我对这些 cmdlet 文档的审查没有显示任何参数。真的坚持这一点,所以任何建议都非常感谢。
这对我有用: