Назад | Перейти на главную страницу

Когда действительно исчез удаленный компьютерный сертификат Windows?

У нас возникла странная проблема, затрагивающая очень небольшое количество (1%) клиентов Windows 7 в нашем домене.

Этим ноутбукам выдается компьютерный сертификат (X509) через AD для доступа к VPN. У нас есть сценарий PowerShell, который запускается ежедневно на каждом из этих ноутбуков, который проверяет дату истечения срока действия сертификата и, если это меньше, чем X дней в будущем, удаляет сертификат из хранилища и вызывает "gpupdate / force" для повторного -получить его с новым таймером истечения срока.

(В нашем случае X больше, чем 18 дней, которые AD обычно использует для автоматического продления. У нас много пользователей, которые отключены от сети более 18 дней, поэтому 18 дней по умолчанию слишком короткое. Сертификат должен быть удалено, иначе gpupdate / force ничего не сделает.)

На 99% наших компьютеров это работает должным образом. Но у нас есть эти несколько машин, на которых после удаления сертификата сертификат НЕ восстанавливается автоматически, если только компьютер не перезагружается и не восстанавливает новый компьютерный сеанс с доменом.
Gpupdate не получает сертификат повторно, обычная периодическая проверка политики, которую Windows выполняет каждые 90–120 минут в фоновом режиме, также не получает его повторно.
После перезагрузки компьютер сразу же получит новый сертификат из AD.
(Очевидно: пользователи не выполняют дополнительную перезагрузку перед отпуском или длительной деловой поездкой, поэтому они находятся в глуши и обнаруживают, что их VPN не работает из-за отсутствия сертификата.)

Кажется, что после удаления сертификат остается в «заблокированном» или «ожидающем» состоянии до следующей перезагрузки. Обычный процесс обновления, по-видимому, по-прежнему "видит" старый сертификат и не имеет причин для приобретения нового.

Кстати: удаление и последующее gpupdate выполняется с помощью этого фрагмента кода в PowerShell.
Мне это кажется нормальным, и в созданном файле журнала не появляется ничего странного.

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.Open("ReadWrite")

foreach ($cert in $store.Certificates) 
{
    $subject = $cert.Subject
    send2log "Deleting certificate: $subject"
    if ($cert.Issuer -match "CN=XX-XX-XXX.*") 
    {
        $store.Remove($cert)
    }
}
$store.Close()
$out = & gpupdate.exe /force
send2log "$out"

Все это приводит меня к вопросу: когда удаленный сертификат действительно исчез (и его можно будет получить повторно)?
Или, как вариант: что может помешать повторному получению сертификата?