2015-05-15 8 views
0

Может кто-то пожалуйста, помогите мне со следующим вопросом (с помощью PowerShell)Получить открытый ключ от CSR

У меня есть CSR в Base64 строку сохраненное в переменной $ CSR

Я хочу, чтобы получить открытый ключ из CSR причина, по которой я хочу это сделать, - это проверить открытый ключ (и, следовательно, закрытый ключ), повторно не использоваться при отправке CSR для Microsoft CA. Моя идея состоит в том, чтобы в основном получить копию сертификата с тем же именем субъекта (если таковой существует) из ЦС и снова проверить его открытый ключ CSR.

Так что мне нужно, чтобы получить открытый ключ от CSR, как уже упоминалось, так далеко я сделал следующее

$RequestX = New-Object ComObjectX509enrollment.CX509CertificateRequestPkcs10 $ RequestX.InitializeDecode ($ КСО, 6) `$ RequestX.PublicKey

, а не сам открытый ключ. Я получаю объект com. Должен ли я использовать отражение этого объекта com для извлечения открытого ключа? Есть ли более простой способ? (Я мог бы использовать CertUtil и немного регулярных выражений, но не хотелось бы)

Спасибо всем E Брант

ответ

1

я понял это мой возится и т.д ....

Таким образом, цель была сравнить открытый ключ в CSR для открытого ключа в существующем сертификате, чтобы убедиться, что они соответствуют нет (теперь может быть намного проще, но теперь это я получил)

$CSR = @" 
<CSR here in base64> 
"@ 

$ObjXX = [System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile("C:\CSR\Cert-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 
Смежные вопросы