Se sei un amministratore di sistema Windows, potresti essere stato costretto a lavorare con i certificati Windows. Lavorare con i certificati in Windows è tipicamente uno dei compiti extra che un amministratore di sistema deve assumersi. Utilizzando il gestore dei certificati di Windows come strumento, puoi farlo!
I certificati sono notoriamente complessi e difficili da capire, ma in questo articolo avrai la possibilità di scoprire che i certificati non sono così spaventosi in Windows!
Questo articolo si concentrerà principalmente sul lavoro con i certificati in Windows. Se desideri saperne di più su come funzionano i certificati in generale, consulta l’articolo correlato Tutorial sui certificati X.509.
Comprensione dei depositi di certificati
All’interno del gestore dei certificati di Windows, tutti i certificati esistono in posizioni di archiviazione logiche chiamate depositi di certificati. I depositi di certificati sono “contenitori” in cui Windows conserva tutti i certificati attualmente installati e un certificato può trovarsi in più di un deposito.
Purtroppo, i depositi di certificati non sono il concetto più intuitivo con cui lavorare. Leggerai come differenziare questi depositi e come lavorarci di seguito.
Ogni deposito si trova nel Registro di sistema di Windows e sul file system. Consulta la tabella sottostante per ulteriori dettagli. Quando lavori con un certificato in un deposito, stai interagendo con il deposito logico; non modifichi direttamente il Registro o il file system. Questo modo più semplice ti consente di lavorare con un singolo oggetto mentre Windows si occupa di come rappresentare quell’oggetto su disco.
A volte vedrai i certificati memorizzati indicati come archivi fisici o logici. Gli archivi fisici si riferiscono al sistema di file effettivo o alla posizione del registro in cui sono memorizzate le chiavi di registro e/o i file. Gli archivi logici sono riferimenti dinamici che fanno riferimento a uno o più archivi fisici. Gli archivi logici sono molto più facili da gestire degli archivi fisici per la maggior parte dei casi d’uso comuni.
Windows memorizza i certificati in due aree diverse – un contesto utente e un contesto computer. Un certificato viene inserito in uno di questi due contesti a seconda che il certificato debba essere utilizzato da un singolo utente, da più utenti o dal computer stesso. Per il resto di questo articolo, un certificato in un contesto utente e computer sarà chiamato informalmente certificati utente e certificati computer.
Certificati utente
Se intendi che un certificato venga utilizzato da un singolo utente, allora un archivio di certificati utente all’interno del gestore dei certificati di Windows è ideale. Questo è il caso d’uso comune per i processi di autenticazione basati su certificato come wired IEEE 802.1x.
I certificati utente si trovano all’interno del profilo dell’utente corrente e sono mappati solo logicamente all’interno del contesto di tale utente. I certificati utente sono “mappati” e sono unici per ogni utente, anche sugli stessi sistemi.
Certificati computer
Se un certificato verrà utilizzato da tutti gli utenti su un computer o da un processo di sistema, dovrebbe essere inserito all’interno di uno store nel contesto del computer. Ad esempio, se un certificato verrà utilizzato su un server web per crittografare le comunicazioni per tutti i client, sarebbe ideale inserire il certificato in uno store nel contesto del computer.
Noterai che lo store dei certificati di un computer è mappato logicamente per tutti i contesti degli utenti. Ciò consente ai certificati presenti nello store dei certificati del computer di essere utilizzati da tutti gli utenti, a seconda delle autorizzazioni configurate per la chiave privata.
Per ulteriori informazioni sulle chiavi private, assicurati di consultare l’articolo X.509 Certificates Tutorial: A Sysadmin Guide.
I certificati del computer si trovano nei rami del Registro di sistema Local Machine e nella cartella Program Data. I certificati degli utenti si trovano nei rami del Registro di sistema Current User e nella cartella App Data. Di seguito puoi vedere una suddivisione di dove si trova ogni tipo di store nel Registro di sistema e nel file system.
Context | Registry Path | Explanation |
---|---|---|
User | HKCU:\SOFTWARE\Microsoft\SystemCertificates\ | Physical store for user-specific public keys |
User | HKCU:\SOFTWARE\Policies\Microsoft\SystemCertificates\ | Physical store for user-specific public keys installed by Active Directory (AD) Group Policy Objects (GPOs) |
Computer | HKLM:\SOFTWARE\Microsoft\SystemCertificates\ | Physical store for machine-wide public keys |
Computer | HKLM:\SOFTWARE\Microsoft\Cryptography\Services\ | Physical store for keys associated with a specific service |
Computer | HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\ | Physical store for machine-wide public keys installed by GPOs |
Computer | HKLM:\SOFTWARE\Microsoft\EnterpriseCertificates\ | Physical store for machine-wide public keys installed by the Enterprise PKI Containers within an AD domain |
Context | File Location | Explanation |
---|---|---|
User | $env:APPDATA\Microsoft\SystemCertificates\ | Physical store for user-specific public keys and pointers to private keys |
User | $env:APPDATA\Microsoft\Crypto\ | Physical store for user-specific private key containers |
Computer | $env:ProgramData\Microsoft\Crypto\ | Physical store for machine-wide private key containers |
Prerequisiti
Per il resto di questo articolo, troverai molti esempi che mostrano interazioni con gli store dei certificati di Windows. Per replicare questi esempi, assicurati di soddisfare i seguenti prerequisiti:
- Sistema operativo Windows Vista, Windows Server 2008 o successivo. Gli esempi mostrati utilizzano Windows 10 Enterprise versione 1903.
- Familiarità con PowerShell. Anche se non è obbligatorio, questo sarà il linguaggio utilizzato per fare riferimento ai certificati quando appropriato. Gli esempi mostrati sono stati tutti creati con Windows PowerShell 5.1.
- Non sarà necessario installare certificati specifici per seguire le istruzioni, ma l’utilizzo di un certificato autofirmato è vantaggioso.
Gestione dei certificati in Windows
In Windows, ci sono tre modi principali per gestire i certificati:
- Il snap-in Certificates di Microsoft Management Console (MMC) (certmgr.msc)
- PowerShell
- Lo strumento a riga di comando
certutil
In questo articolo, imparerai come gestire i certificati tramite l’interfaccia Certificates MMC e PowerShell. Se desideri saperne di più su come utilizzare certutil
, consulta la documentazione Microsoft.
PowerShell vs. Gestore certificati di sicurezza di Windows
Dato che i certificati possono essere gestiti in diversi modi in Windows, quale scegliere? Dovresti optare per l’interfaccia grafica (MMC) o utilizzare il comando di PowerShell da riga di comando?
Nota: Questo articolo è pertinente sia per il Gestore certificati di Windows 7 che per il Gestore certificati di Windows 10.
Innanzitutto, considera il ciclo di vita di un certificato. Se hai intenzione di installare o rimuovere un singolo certificato una sola volta, potresti considerare l’utilizzo di MMC. Ma se stai gestendo più certificati o ti trovi a eseguire la stessa operazione più volte, potrebbe essere più conveniente utilizzare la riga di comando. Anche se non sai come scrivere script PowerShell, vale la pena imparare se devi gestire molti certificati diversi.
Diamo prima un’occhiata a come scoprire i certificati installati su Windows utilizzando sia il Certificate Manager che PowerShell.
Utilizzando il Certificate Manager di Windows (certmgr.msc)
Per visualizzare i certificati con il MMC, apri il Certificate Manager dal menu Start e digita certmgr.msc. Questo aprirà il MMC dei certificati di Windows. Questa vista iniziale fornirà una panoramica di tutti i repository logici visualizzati nella finestra sinistra.
Nella schermata sottostante puoi vedere che il repository logico Trusted Root Certification Authorities è selezionato.

Visualizzazione dei repository fisici
Di default, il certificate manager di Windows non mostrerà i repository fisici effettivi. Per visualizzare i repository, fai clic su Visualizza e poi su Opzioni. Vedrai quindi le opzioni per scegliere di mostrare i repository fisici dei certificati. Attivando questa opzione, sarà più facile identificare i percorsi specifici all’interno di Windows.

Ora puoi vedere che sono mostrati ulteriori contenitori sotto il repository logico Trusted Root Certification Authorities mostrato in precedenza. I certificati sono ancora raggruppati rispetto ai loro repository logici, ma ora puoi vedere il repository fisico “Registro”.

Esaminare gli attributi nel Certificate Manager di Windows
Ci sono molti attributi di un certificato che puoi vedere quando li visualizzi con il MMC. Ad esempio, probabilmente vorrai selezionare certificati specifici.
Il modo più semplice per realizzare ciò è facendo riferimento al valore di estensione Numero seriale o Thumbprint del certificato. Se il certificato è stato firmato da un’autorità di certificazione (CA), avrà un numero seriale al momento dell’emissione. Il Thumbprint viene calcolato ogni volta che il certificato viene visualizzato.
È possibile visualizzare alcuni attributi di un certificato aprendolo nel MMC, come mostrato di seguito.

Un’importante caratteristica da evidenziare è la presenza di chiavi private incorporate. I certificati in Windows possono anche avere una chiave privata corrispondente. Queste chiavi private sono memorizzate in archivi fisici corrispondenti come file crittografati.
Per distinguere rapidamente un certificato con e senza una chiave privata corrispondente, osserva l’icona del certificato. Nel gestore dei certificati di Windows, se l’icona appare come un pezzo di carta con un nastro, non c’è una chiave privata corrispondente. Se un certificato ha una chiave privata, vedrai una chiave nell’icona del MMC e vedrai una chiave nella scheda Generale quando apri il certificato.

Utilizzando PowerShell
Come con il MMC, è possibile visualizzare e gestire i certificati anche con PowerShell. Iniziamo ispezionando i certificati nei loro archivi fisici (nel registro e nel file system).
Per mezzo dell’archivio fisico
Utilizzando il cmdlet PowerShell Get-ChildItem
, è possibile enumerare tutte le chiavi e i valori all’interno del percorso della chiave di registro genitore HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\.
Il comando seguente elencherà tutti i certificati dell’utente attualmente connesso nel negozio logico Autorità di Certificazione Intermedie.
Ogni voce nel Hive del Registro corrisponderà all’Impronta Digitale del certificato per una CA fidata e al certificato corrispondente nella proprietà corrispondente. Di seguito puoi vedere un esempio di output di questo comando.

Un altro negozio comune è quello Personale. I tuoi certificati per questo negozio sono situati nel sistema di file anziché nel Registro. Nei comandi seguenti mostreremo questi diversi percorsi fisici e il loro scopo.
Ogni file nella directory restituita dal comando seguente corrisponde a un certificato installato nel negozio Personale dell’utente corrente.
Ogni file restituito dal comando seguente è un riferimento all’oggetto per una chiave privata creata dal Key Storage Provider (KSP). Il nome del file corrisponde all’Identificatore della Chiave Soggetto del certificato. Ogni chiave privata che installi avrà un file corrispondente aggiunto.
Ogni file nella directory restituita dal comando seguente è il contenitore unico per la chiave privata crittografata creata dal KSP. Non c’è una relazione diretta tra il nome del file e il certificato, ma il file è il bersaglio del puntatore nel comando precedente.
Per Negozio Logico
Dato che lavorare con i certificati nei loro percorsi fisici è poco comune, lavorerai con gli store logici per il resto degli esempi.
PowerShell può accedere agli store logici di Windows usando il Cert:
PSDrive. Il Cert:
PSDrive mappa i certificati agli store fisici molto come fa l’MMC.
Sfortunatamente, l’MMC e il Cert
PSDrive non etichettano gli store logici allo stesso modo. Di seguito puoi vedere una tabella di confronto degli store comuni e dei loro nomi sia nell’MMC che nel Cert
PSDrive.
Cert: | Certificates MMC |
---|---|
My | Personal |
Remote Desktop | Remote Desktop |
Root | Trusted Root Certification Authorities |
CA | Intermediate Certification Authorities |
AuthRoot | Third-Party Root Certification Authorities |
TrustedPublisher | Trusted Publishers |
Trust | Enterprise Trust |
UserDS | Active Directory User Object |
Selezione dei Certificati
Quando lavori con i certificati avrai bisogno di un modo per filtrare e selezionare i certificati su cui eseguire operazioni specifiche. La maggior parte delle volte filtri e selezioni i certificati in base al valore di una specifica estensione.
Per i seguenti esempi devi iniziare elencando tutti i certificati installati nello store CA radice.
Gli oggetti restituiti saranno oggetti certificato che puoi utilizzare nei seguenti esempi.
Le estensioni comuni sono già disponibili come proprietà degli oggetti certificato. Nell’esempio sottostante stai usando Get-Member
per elencare tutte le proprietà degli oggetti restituiti.

Come puoi vedere nella Figura 9, alcune di queste estensioni, come Issuer, sono utili per trovare il certificato che stai cercando. Le estensioni forniscono informazioni sul certificato, come a chi è emesso, a cosa può essere utilizzato e eventuali restrizioni su di esso.
In casi d’uso più complessi, vorrai trovare certificati con altre estensioni, come il modello di certificato utilizzato. La difficoltà consiste nel fatto che i valori per queste estensioni vengono restituiti come un array di interi. Questi interi corrispondono a contenuti codificati in ASN.1.
Le ScriptProperties esistenti disponibili sull’oggetto mostrano esempi di interfacciamento con questi valori. Nel comando sottostante, estrai manualmente gli utilizzi chiave per vedere questa relazione.
La nuova parte che introduciamo nel comando sopra è il metodo di formato, che esegue la decodifica ASN.1. Gli passi un valore booleano (ad esempio, $true) sopra per identificare se desideriamo che l’oggetto restituito sia su una sola riga o su più righe.
Userai il valore Thumbprint dal certificato nella Figura 7 nel comando sottostante. Il valore Thumbprint viene impostato come variabile di PowerShell e utilizzato per selezionare il certificato specifico nei comandi sottostanti.
Creazione di certificati auto-firmati con PowerShell
PowerShell può creare certificati auto-firmati utilizzando il cmdlet New-SelfSignedCertificate
. I certificati auto-firmati sono utili per i test in quanto consentono di generare una coppia di chiavi pubbliche e private senza l’uso di una CA.
Creiamo ora un certificato auto-firmato nei depositi Utente corrente e Computer locale da utilizzare negli esempi per i passaggi successivi.
Nell’esempio sottostante, PowerShell genera una coppia di chiavi pubbliche e private, un certificato auto-firmato e li installa tutti nei depositi di certificati appropriati.
L’utilizzo di certificati auto-firmati per servizi di produzione non è consigliato in quanto tutti i meccanismi basati sulla fiducia non esistono.
Importazione/Esportazione di Certificati
La crittografia a chiave pubblica si basa fondamentalmente sulla possibilità di accesso diffuso alla chiave pubblica. Data questa premessa, è necessario disporre di modi standard per condividere efficacemente i certificati. Altrettanto importante è la sicurezza delle chiavi private. Conservare le chiavi private su supporti inaccessibili o con materiali di ripristino in caso di disastro è una pratica comune per alcune chiavi private.
Entrambe queste operazioni richiedono modi per archiviare questi oggetti crittografici in formati standard. L’esportazione fornisce le funzioni per archiviare questi oggetti e garantire che utilizzino formati di file standard ampiamente accettati. L’importazione consente di importare gli oggetti crittografici nei sistemi operativi Windows.
Utilizzo del Gestore certificati di Windows (certmgr.msc)
L’esportazione dei certificati dal MMC è relativamente semplice. Per esportare un certificato senza una chiave privata, fare clic sul certificato nel MMC, fare clic sul menu Tutte le attività e quindi su Esporta.
Durante l’esportazione, verrà richiesto un formato di file come mostrato di seguito. Le opzioni più comuni sono DER o Codifica Base-64.

Esportazione delle chiavi private
Per esportare un certificato con una chiave privata associata, è necessario soddisfare due criteri: l’account connesso deve avere l’autorizzazione per la chiave privata (solo per i certificati del computer) e la chiave privata deve essere contrassegnata come esportabile.
Per verificare le autorizzazioni per le chiavi private del computer locale, è possibile selezionare un certificato con una chiave privata, scegliere Tutte le attività, e Gestisci chiavi private all’interno di Certificates MMC. La finestra di dialogo che si apre mostra le voci di controllo di accesso per le chiavi private.

Quando sono soddisfatti questi due o tre prerequisiti, è possibile selezionare un certificato, fare clic su Tutte le attività e poi su Esporta come si farebbe con un certificato con solo una chiave pubblica. Quando viene esportato, dovresti ora avere l’opzione per selezionare Sì, esporta la chiave privata come mostrato di seguito.

Quando esporti una chiave privata in Windows, puoi salvarla solo come file PFX. Questi tipi di file e formati di codifica sono dettagliati in dettaglio in questo post.
Per le impostazioni rimanenti mostrate nella procedura guidata di esportazione, puoi utilizzare le impostazioni predefinite. La tabella sottostante è un riepilogo rapido di ciascuna.
Setting | Description |
---|---|
Including all certificates in the certification path if possible | Helps with portability of certificate issuers, and includes all pertinent public keys in the PFX |
Delete the private key if the export is successful | Removes the private key from the file and has few common use cases, but one example is to test access to private keys |
Export all extended properties | Will include any extensions within the current certificate, these relate to the certificates [specific settings]( |
Enable certificate privacy | Normally only the private key will be encrypted in the exported PFX file, this setting encrypts the entire contents of the PFX file |
Group or user names | You can use a group or user security principal from Active Directory for encrypting the contents of the PFX file, but a password is the most portable option across legacy systems or computers not joined to the same domain |
Importazione dei certificati
La funzione di importazione è la stessa per tutti i tipi di file di certificato supportati. L’unica differenza è se il file include una chiave privata, puoi “Contrassegnare questa chiave come esportabile”, di cui leggerai ulteriori informazioni di seguito. Windows utilizzerà la procedura guidata di importazione certificato.

Quando utilizzi la procedura guidata di importazione certificato per un file PFX, dovrai fornire la password utilizzata per crittografare la chiave privata. Ecco un altro riassunto delle opzioni di importazione.
Setting | Description |
---|---|
Enable strong private key protection | Requires a password for each access of a private key, be cautious of newer functions as they will not be supported in all software |
Mark this key as exportable | You should try to avoid using this setting on any end system, private keys should be treated similarly to storing passwords |
Protect private key using [virtualization-based security] | The setting provides more security functionality for protecting private keys from advanced malware attacks |
Include all extended properties | Relates to the same Windows-specific settings discussed as with exporting |
I certificati di firma del codice PowerShell sono un buon caso d’uso per una forte protezione della chiave privata.
La posizione automatica dei certificati può essere qualcosa di cui stare attenti. Probabilmente otterrai i migliori risultati selezionando manualmente il deposito dei certificati.
Utilizzando PowerShell
Ora, con PowerShell esporta uno dei certificati autofirmati che hai creato in precedenza. Nell’esempio viene utilizzato l’utente corrente, ma puoi utilizzare sia quello che preferisci.
Sotto, stai selezionando un certificato nel deposito logico Personale dell’utente corrente che è stato autofirmato, ovvero in cui l’emittente corrisponde al soggetto.
Ora che hai selezionato un certificato, puoi utilizzare il comando Export-Certificate
per salvare un file codificato in formato DER utilizzando il comando seguente.
Ora vediamo come esportare anche la chiave privata. Qui stai verificando che il certificato selezionato abbia una chiave privata, se ciò non restituisce vero, allora il comando Get-Item
probabilmente ha selezionato il certificato sbagliato.
Sotto imposti una password da utilizzare per la crittografia della chiave privata. Quindi esporti il certificato selezionato in un file PFX e utilizza la password inserita in precedenza per crittografare il file.
In modo simile all’esportazione, ci sono due comandi. Un comando per l’importazione dei certificati e uno per l’importazione dei file PFX.
Di seguito il comando Import-Certificate
importa il file codificato in formato DER che hai esportato in precedenza nello store personale dell’Utente Corrente.
Supponiamo che tu voglia installare anche la chiave privata di quel certificato.
Tieni presente che la password deve essere una Secure String. Inoltre, se stai importando nello store del computer locale (ad esempio, Cert:\LocalMachine\), dovrai eseguire il comando da un prompt dell’amministratore con privilegi elevati.
Nell’esempio precedente, utilizziamo anche il parametro Exportable con il comando, che contrassegna la chiave privata come esportabile in futuro. Per impostazione predefinita, la chiave privata non è esportabile. Le chiavi private esportabili sono un’altra considerazione sulla sicurezza e meritano ulteriori attenzioni su come proteggerle.
Ci sono anche molte altre cose da fare con i certificati in Windows, quindi dovresti esplorare di più.
Rimozione dei certificati con PowerShell
Quando rimuovi i certificati, devi tenere presente che non c’è il Cestino. Una volta eliminato un certificato, è andato. Questo significa che è fondamentale confermare di eliminare il certificato corretto convalidando un identificatore univoco, come il numero di serie o il valore dell’estensione Thumbprint.
In modo simile a quanto sopra, nel comando seguente selezioniamo un certificato auto-firmato dallo store personale dell’Utente Corrente.
In basso puoi vedere le proprietà Thumbprint, Serial Number e Subject del certificato selezionato per assicurarti che sia il certificato che intendi selezionare.
Verifica di aver selezionato il certificato corretto che intendi eliminare.
Il comando seguente rimuove tutti gli oggetti certificato selezionati, usalo con cautela. Passando l’oggetto $certificate
tramite il pipeline al cmdlet Remove-Item
nel comando seguente, eliminerai tutto il contenuto del certificato senza alcuna richiesta di convalida.
Riepilogo
In questo articolo hai lavorato con i certificati in Windows, imparando come accedervi e alcuni strumenti da utilizzare durante il lavoro con essi. C’è molto altro da esplorare sull’argomento, incluso come associare i certificati installati a servizi specifici, o addirittura come implementare una propria infrastruttura a chiave pubblica (PKI) privata distribuendo le tue proprie Autorità di Certificazione (CA).
Ulteriori letture
Source:
https://adamtheautomator.com/windows-certificate-manager/