экспортный сертификат с использованием powershell - PullRequest
0 голосов
/ 06 мая 2020

Любые эксперты знают, какой код нужно сделать для экспорта значений сертификата из keyusage на вкладке сведений о сертификате?

enter image description here

коды

dir cert:\currentuser\my |
Where-Object  ($_.Extensions `
  | Where-Object { $_.Oid.Value -eq "2.5.29.15" -And ( $_.KeyUsages -eq 'KeyEncipherment|DataEncipherment(30)') } |
Foreach-Object { [system.IO.file]::WriteAllBytes("c:\export\$($_.SerialNumber).cer",   ($_.Export('CERT', $null)) ) }

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте это, чтобы перечислить все сертификаты, которые содержат ТОЛЬКО KeyEncipherment в расширении использования ключа:

#Listing 1
dir cert:\currentuser\my | 
Where-Object {
  ($_.Extensions | 
  Where-Object{ 
    $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "KeyEncipherment"}) } | 
Select-Object{ 
  $_.SerialNumber, 
  $_.Issuer, 
  ($_.Extensions | 
    Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

А вот экспорт:

#Listing 2
dir cert:\currentuser\my | 
Where-Object { 
  ($_.Extensions | 
    Where-Object{ 
      $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "KeyEncipherment"}) } | 
Foreach-Object{ 
[System.IO.File]::WriteAllBytes(
  ".\$($_.SerialNumber).cer", 
  $_.Export("Cert", $null)); }

Попробуйте здесь перечислены все сертификаты, которые содержат ТОЛЬКО DataEncipherment И KeyEncipherment в расширении использования ключа:

#Listing 3
dir cert:\currentuser\my | 
Where-Object {
  ($_.Extensions | 
  Where-Object{ 
    $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "DataEncipherment, KeyEncipherment"}) } | 
Select-Object{ 
  $_.SerialNumber, 
  $_.Issuer, 
  ($_.Extensions | 
    Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

И вот экспорт:

#Listing 4

dir cert:\currentuser\my | 
Where-Object { 
  ($_.Extensions | 
    Where-Object{ 
      $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "DataEncipherment, KeyEncipherment"}) } | 
Foreach-Object{ 
[System.IO.File]::WriteAllBytes(
  ".\$($_.SerialNumber).cer", 
  $_.Export("Cert", $null)); }

Чтобы проверить ключевые значения использования ВСЕХ сертификатов, запустите:

#Listing 5
dir cert:\currentuser\my | 
Select-Object{  
  $_.SerialNumber, 
  $_.Issuer, 
 ($_.Extensions | Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

Вот результат: enter image description here

...