Здравствуйте. Есть терминальная ферма, где нужно импортировать 1 сертификат ряду пользователям. Есть личные сертификаты.
Я попытался автоматизировать процесс с помощью Powershell.
Цитата:$adsisearcher = [adsisearcher]"(&(objectClass=user)(objectCategory=person)(SamAccountName=$env:USERNAME))"
$user = $adsisearcher.FindOne()
$UserName = ($user.properties).displayname
$CertCompany = "Рога и копыта"
[Bool]$bIsCompanyCertificate = $False
[Bool]$bIsPersonalCertificate = $False
$Certs = Get-ChildItem "Cert:\CurrentUser\My" | fl -Recurse
$Today = Get-Date
$Certs.NotAfter -lt $Today | Remove-Item
if( $Certs.DnsNameList | where {$_.Punycode -match $CertCompany} ) {
$bIsCompanyCertificate = $True
}
if( $Cert.DnsNameList | where {$_.Punycode -match $UserName}) {
$bIsPersonalCertificate = $True
}
if( $bIsCompanyCertificate ) {
Write-Host "Company Certificate is Found"
} Else {
Write-Host "Company Certificate is not Found. Push Certificate"
Start-Process -NoNewWindow -FilePath "C:\Program Files\Crypto Pro\CSP\certmgr.exe" -ArgumentList "-inst -store uMy -pfx -file ""\\domain.com\SYSVOL\domain.com\scripts\RDS\Certificates\$CertCompany.pfx"" -pin 123456789 -silent"
}
if( $bIsPersonalCertificate ) {
Write-Host "Personal Certificate is Found"
} Else {
Write-Host "Personal Certificate is not Found. Push Certificate"
Start-Process -NoNewWindow -FilePath "C:\Program Files\Crypto Pro\CSP\certmgr.exe" -ArgumentList "-inst -store uMy -pfx -file ""\\domain.com\SYSVOL\domain.com\scripts\RDS\Certificates\$UserName.pfx"" -pin 123456 -silent"
}
Он отлично отрабатывает, по установке сертификата.
1. Я удаляю просроченные сертификаты.
2. Я смотрю личный контейнер, если там нет сертификата организации, устанавливаю.
3. По той же аналогии и с личными.
- Обнаружил, что при удалении с контейтера, в КриптоПро сертификат всё равно остается и в самом реестре.
Я не очень понимаю:
Пример:
./certmgr –delete –store mMy –dn CN=localcomputer
Удаление из личного хранилища локального компьютера сертификата, общее имя в
котором содержит строчку localcomputer.
./certmgr –delete –cont “\\\\.\\HDIMAGE\\testcontainer”
Удаление контейнера.
- Название закрытого ключа по сей видимости с сертификата я не получу простым путем. Остается только дергать сертификат с контейнера.
Get-ChildItem "Cert:\CurrentUser\My" | fl
Я получаю:
Subject : СНИЛС=01111111111, T=Генеральный директор, G=Андрей Иванович, SN=Мокин, CN="Общество с ограниченной ответственностью ""Рога и Копыта""", O="Общество с ограниченной ответственностью ""Рога и Копыта""", S=77 г. Москва, L=0, C=RU, ИНН=007709431111, E=mail@mail.com, STREET=Нагорный проезд 1 1, ОГРН=1037709011111
Issuer : CN="ООО ""НПЦ ""1С""", O="ООО ""НПЦ ""1С""", E=ca@1c.ru, S=77 Москва, L=Москва, C=RU, ИНН=007729510210, ОГРН=1047796526546, STREET="улица Мосфильмовская, дом 42, строение 1, эт/пом/ком 1/
1/7"
Я полагаю, мне нужен CN ? Но вот такой вариант не отрабатывает:
C:\Program Files\Crypto Pro\CSP>certmgr -delete -store mMy -dn CN="Общество с ограниченной ответственностью ""Рога и Копыта"""
Certmgr 1.1 (c) "Crypto-Pro", 2007-2019.
program for managing certificates, CRLs and stores
No certificate matching the criteria
The requested certificate does not exist.
[ErrorCode: 0x8010002c]
C:\Program Files\Crypto Pro\CSP>certmgr -delete -thumbprint 414ab3cb8ec6ffd6c8791bd2b29c7a4008fdae86
Certmgr 1.1 (c) "Crypto-Pro", 2007-2019.
program for managing certificates, CRLs and stores
No certificate matching the criteria
The requested certificate does not exist.
[ErrorCode: 0x8010002c]
C:\Program Files\Crypto Pro\CSP>certmgr -delete -all
Certmgr 1.1 (c) "Crypto-Pro", 2007-2019.
program for managing certificates, CRLs and stores
No certificate matching the criteria
The requested certificate does not exist.
[ErrorCode: 0x8010002c]
- Может сложность в кавычках или я беру какое-то не то значение ? C "ООО ""НПЦ ""1С""" то же не сработало.
Как удалить то сертификат ?
Отредактировано пользователем 28 июня 2021 г. 17:34:51(UTC)
| Причина: Не указана