从CSR获取公钥



谁能帮我解决以下问题(使用PowerShell)

我有一个CSR在Base64字符串保存到一个变量叫做$CSR

我想从CSR中获得公钥,我想这样做的原因是我想检查公钥(因此私钥)在为微软CA提交CSR时不会被重用。我的想法是基本上从CA获得具有相同主题名称(如果存在)的证书的副本,并再次检查其公钥CSR。

所以我需要从CSR中获得如上所述的公钥,因此到目前为止,我已经完成了以下操作

$RequestX = New-Object ComObjectX509enrollment.CX509CertificateRequestPkcs10 $RequestX.InitializeDecode($CSR,6)"RequestX美元。PublicKey

返回的是一个com对象,而不是公钥本身。我是否必须在此com对象上使用反射来提取公钥?有更简单的方法吗?(我可以使用certutil和一点正则表达式,但宁愿不)

谢谢所有E黑雁

我弄清楚了我的混乱等....

我们的目标是将CSR中的公钥与现有证书中的公钥进行比较,看看它们是否匹配(现在可能是一种更简单的方法,但现在我明白了)

$CSR = @"
<CSR here in base64>
"@
$ObjXX = [System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile("C:CSRCert-TestSite.cer")
$X = [System.Convert]::ToBase64String($ObjXX.GetPublicKey())
$RequestX = New-Object -ComObject X509enrollment.CX509CertificateRequestPkcs10 
$RequestX.InitializeDecode($CSR,6)
$Y = $RequestX.PublicKey.EncodedKey() -replace "`r`n"
Compare-Object $X $Y 

最新更新