gpt4 book ai didi

windows - 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

转载 作者:可可西里 更新时间:2023-11-01 14:33:13 27 4
gpt4 key购买 nike

如标题所示,我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥。如果我需要 .cer 文件或 .pfx 文件,我可以通过 MMC 或 PowerShell pkiclient 轻松导出这些文件,但我找不到方法获取私钥。

https://learn.microsoft.com/en-us/powershell/module/pkiclient/export-certificate?view=win10-ps

使用像 https://www.sslshopper.com/ssl-converter.html 这样的在线工具不行。

PS版本:

PS C:\Users\oscar> $PSVersionTable

Name Value
---- -----
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

我可以这样得到公钥:

(Get-PfxCertificate -FilePath C:\Users\oscar\Desktop\localhost.pfx).GetPublicKey()

然后像这样导出整个证书:

(Get-PfxCertificate -FilePath C:\Users\oscar\Desktop\localhost.pfx).GetRawCertData()

结果来自

PS C:\Users\oscar> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
PS C:\Users\oscar> $mypfx = Get-PfxData -FilePath C:\Users\oscar\Desktop\localhost.pfx -Password $mypwd
PS C:\Users\oscar> $mypfx

OtherCertificates EndEntityCertificates
----------------- ---------------------
{} {[Subject]...


PS C:\Users\oscar> $mypfx.EndEntityCertificates

Thumbprint Subject
---------- -------
8ED4971564E35099D6DB490C3756E2AD43AAAAAA CN=localhost

测试了来自@Brad 的命令,但出现以下错误。

Private key is NOT plain text exportable

certutil -exportPFX -p "myPassword" -privatekey -user my <Certificate Serial Number> C:\localhost.pfx

enter image description here

类似于 MMC 证书中的证书导出向导,仅在包含 key 的情况下才能导出到 .pfx

enter image description here

最佳答案

我遇到了同样的问题并在PSPKI Powershell module 的帮助下解决了它来自 PS 画廊。虽然我知道您正在寻找一种最好使用 Windows 中某些内置功能的解决方案,但从 PS Gallery 安装模块可能是可以接受的。至少在我的情况下是这样。

首先安装 PSPKI 模块(我假设 PSGallery 存储库已经设置好):

Install-Module -Name PSPKI

PSPKI 模块提供了一个 Cmdlet Convert-PfxToPem,它将 pfx 文件转换为 pem 文件,其中包含作为 base64 编码文本的证书和 pirvate key :

Convert-PfxToPem -InputFile C:\path\to\pfx\file.pfx -Outputfile C:\path\to\pem\file.pem

现在,我们需要做的就是使用一些正则表达式魔术拆分 pem 文件。例如,像这样:

(Get-Content C:\path\to\pem\file.pem -Raw) -match "(?ms)(\s*((?<privatekey>-----BEGIN PRIVATE KEY-----.*?-
----END PRIVATE KEY-----)|(?<certificate>-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----))\s*){2}"

$Matches["privatekey"] | Set-Content "C:\path\to\key\file.pem"
$Matches["certificate"] | Set-Content "C:\path\to\certificate\file.pem"

关于windows - 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52929805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com