Сертифікати в Windows: управління через certmgr і PowerShell

7 хв читання

Управління SSL/TLS сертифікатами в Windows: certmgr.msc, імпорт і експорт сертифікатів, перевірка терміну дії, розгортання через GPO і PowerShell.

Сертифікати в Windows використовуються для HTTPS, підпису коду, EFS, VPN і автентифікації. Вміння ними управляти — базова навичка адміністратора.


Де зберігаються сертифікати

Windows має кілька сховищ сертифікатів:

Сховище Призначення
Personal (My) Особисті сертифікати з приватним ключем
Trusted Root CA Кореневі довірені центри сертифікації
Intermediate CA Проміжні центри сертифікації
Trusted Publishers Довірені видавці ПЗ
Untrusted Заблоковані сертифікати

Два рівні:

  • certmgr.msc — для поточного користувача
  • certlm.msc — для локального комп'ютера (локальна машина)

Перегляд сертифікатів через GUI

Win + R → certmgr.msc  (поточний користувач)
Win + R → certlm.msc   (комп'ютер)

PowerShell — управління сертифікатами

# Список всіх сертифікатів поточного користувача
Get-ChildItem Cert:\CurrentUser\My

# Сертифікати комп'ютера
Get-ChildItem Cert:\LocalMachine\My

# Всі сховища
Get-ChildItem Cert:\ | Get-ChildItem

# Детальна інформація про сертифікат
Get-ChildItem Cert:\LocalMachine\My |
  Select-Object Subject, Thumbprint, NotBefore, NotAfter, Issuer |
  Format-Table -AutoSize

# Сертифікати що закінчуються через 30 днів
Get-ChildItem -Path Cert:\LocalMachine\My |
  Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) } |
  Select-Object Subject, NotAfter, Thumbprint

Імпорт сертифіката

PFX (з приватним ключем)

# Імпорт PFX
$password = ConvertTo-SecureString "CertPassword!" -AsPlainText -Force
Import-PfxCertificate `
  -FilePath "C:\certs\mycert.pfx" `
  -CertStoreLocation "Cert:\LocalMachine\My" `
  -Password $password

# Або через certlm.msc: Personal → Certificates → правою → All Tasks → Import

CER/CRT (тільки публічний ключ)

# Імпорт CER сертифіката
Import-Certificate `
  -FilePath "C:\certs\rootca.cer" `
  -CertStoreLocation "Cert:\LocalMachine\Root"

Експорт сертифіката

# Знайти сертифікат
$cert = Get-ChildItem Cert:\LocalMachine\My |
  Where-Object { $_.Subject -like "*mycert*" }

# Експортувати як CER (без приватного ключа)
Export-Certificate -Cert $cert -FilePath "C:\backup\mycert.cer"

# Експортувати як PFX (з приватним ключем)
$password = ConvertTo-SecureString "BackupPassword!" -AsPlainText -Force
Export-PfxCertificate `
  -Cert $cert `
  -FilePath "C:\backup\mycert.pfx" `
  -Password $password

Розгортання сертифікатів через GPO

Для автоматичного розгортання кореневого CA на всі ПК домену:

gpmc.msc → потрібний GPO → Computer ConfigurationWindows SettingsSecurity SettingsPublic Key PoliciesTrusted Root Certification Authorities → правою → Import → вибери .cer файл.

Або через PowerShell на всіх ПК:

# Розгорнути на всі ПК через Invoke-Command
$certData = [System.IO.File]::ReadAllBytes("C:\certs\rootca.cer")

Invoke-Command -ComputerName (Get-ADComputer -Filter *).Name -ScriptBlock {
    param($data)
    $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $cert.Import($data)
    $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "LocalMachine")
    $store.Open("ReadWrite")
    $store.Add($cert)
    $store.Close()
} -ArgumentList (,$certData) -ErrorAction SilentlyContinue

Видалення сертифіката

# Знайти і видалити за Thumbprint
$thumbprint = "1A2B3C4D..."
Remove-Item "Cert:\LocalMachine\My\$thumbprint"

# Видалити прострочені сертифікати
Get-ChildItem Cert:\LocalMachine\My |
  Where-Object { $_.NotAfter -lt (Get-Date) } |
  Remove-Item

Перевірка ланцюжка сертифікатів

# Перевірити валідність сертифіката
$cert = Get-ChildItem Cert:\LocalMachine\My | Select-Object -First 1
$chain = New-Object Security.Cryptography.X509Certificates.X509Chain
$chain.Build($cert)
$chain.ChainStatus | Select-Object Status, StatusInformation

# Якщо ChainStatus порожній — сертифікат валідний

Самопідписаний сертифікат для тестування

# Створити самопідписаний сертифікат
$cert = New-SelfSignedCertificate `
  -DnsName "myserver.local", "localhost" `
  -CertStoreLocation "Cert:\LocalMachine\My" `
  -NotAfter (Get-Date).AddYears(2) `
  -KeyUsage DigitalSignature, KeyEncipherment `
  -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")

Write-Output "Thumbprint: $($cert.Thumbprint)"

Підсумок

Get-ChildItem Cert:\LocalMachine\My — переглянути сертифікати. Import-PfxCertificate — імпортувати PFX. Export-PfxCertificate — резервна копія з приватним ключем. Перевіряй прострочені сертифікати регулярно — Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) }. GPO Trusted Root CA — автоматичне розгортання корпоративного CA на всі ПК.


⚡ Шукаєш потрібну команду?

→ PowerShell і CMD довідник — 40+ команд з пошуком за задачею. Введи "мережа", "диск" або "безпека" і одразу отримай готову команду.

Схожі статті

← Всі статті