In Windows 11 la finestra “Seleziona un certificato per l’autenticazione” può comparire a ogni accesso a portali o servizi aziendali mTLS. In questa guida pratica vediamo come eliminarla o ridurla al minimo: pulizia dei certificati, auto‑selezione in Edge/Chrome via GPO/Intune e accorgimenti lato server.
Perché compare il prompt “Seleziona un certificato”
Il messaggio è un effetto della mutual TLS (mTLS): il server richiede un certificato utente e Windows/il browser mostrano le credenziali disponibili. Il prompt riappare di frequente quando:
- sono installati più certificati client (o copie scadute dello stesso certificato);
- il browser o l’app non è configurato per selezionare automaticamente quello corretto;
- il server non invia una lista di CA accettate o non restringe la richiesta a un certificato specifico, lasciando al client molte opzioni valide.
Risultato: ad ogni accesso devi scegliere manualmente un certificato, con rischio di errore e un’esperienza utente pessima.
Come funziona la scelta del certificato in Windows 11
In breve, durante l’handshake TLS il server invia un “CertificateRequest” con gli issuer consentiti e il client filtra i certificati personali che:
- sono valdi (non scaduti, non revocati);
- hanno l’EKU “Client Authentication” (
1.3.6.1.5.5.7.3.2
); - posseggono la chiave privata disponibile;
- provengono da una CA accettata dal server (se specificata).
Se i candidati sono più di uno, il sistema mostra il selettore. Se ne resta uno solo, molti browser effettuano l’auto‑selezione e il prompt non appare.
Sintesi operativa in pochi minuti
- Verifica quale certificato è quello giusto (valido, con EKU adatto, catena completa).
- Rimuovi dal tuo archivio personale i certificati scaduti o duplicati, facendo prima un export di backup se necessario.
- Configura Edge/Chrome con un criterio di auto‑selezione per gli URL aziendali.
- Allinea le CA intermedie/root e, lato server, restringi gli issuer accettati.
- Pulisci cache e riavvia il browser per applicare le modifiche.
Verificare il certificato corretto
Prima di toccare nulla, accertati di avere un solo certificato idoneo per il servizio target.
- Apri la gestione certificati utente con Win+R →
certmgr.msc
. - Vai in Personale → Certificati e controlla:
- Data di scadenza (Non dopo/NotAfter).
- Scopo/EKU: deve includere Autenticazione client (
1.3.6.1.5.5.7.3.2
). - Emittente (Issuer) e Soggetto (Subject) — CN/OU/O devono combaciare con le policy aziendali.
- Presenza della chiave privata (icona con chiave o voce “Hai una chiave privata corrispondente”).
- SAN (Subject Alternative Name) se l’autenticazione mappa su UPN o e‑mail.
- Se usi smart card/token, verifica con il software del fornitore quale certificato è attivo e quale impostare come default.
Pulire i certificati non necessari
La rimozione di duplicati e copie scadute riduce drasticamente la comparsa del prompt.
Dall’archivio utente o computer
- Apri
certmgr.msc
(Utente corrente) ocertlm.msc
(Computer locale). - In Personale → Certificati ordina per Data di scadenza o Oggetto.
- Elimina le copie scadute o i duplicati non più usati.
Attenzione: prima di eliminare, valuta un export PFX come backup (se la chiave è esportabile). Non toccare certificati in archivi come Autorità di certificazione intermedie o Autorità di certificazione radice attendibili se non sai esattamente cosa stai facendo.
Backup veloce in PFX
# Esegui in PowerShell come utente
$thumb = "<THUMBPRINT_CERTIFICATO>"
$cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object Thumbprint -eq $thumb
$pwd = Read-Host "Password PFX" -AsSecureString
Export-PfxCertificate -Cert $cert -FilePath "$env:USERPROFILE\Desktop\backup.pfx" -Password $pwd
Se la chiave privata è non esportabile (tipico con smart card/token), l’export completo non sarà possibile: conserva almeno il certificato pubblico (.cer).
Automatizzare la pulizia con PowerShell
Script di esempio per individuare duplicati per Subject, mantenere il più recente ed eliminare il resto (inizialmente in modalità prova):
# Analizza archivio personale utente
$certs = Get-ChildItem Cert:\CurrentUser\My | Sort-Object Subject, NotAfter -Descending
$groups = $certs | Group-Object Subject
$toRemove = foreach ($g in $groups) { $g.Group | Select-Object -Skip 1 } # lascia il più nuovo
$toRemove | Format-Table Subject, Thumbprint, NotAfter
Quando sei sicuro, rimuovi (prima prova con -WhatIf)
$toRemove | Remove-Item -WhatIf # togli -WhatIf per applicare
Per rimuovere solo i certificati scaduti:
Get-ChildItem Cert:\CurrentUser\My |
Where-Object { $_.NotAfter -lt (Get-Date) } |
Remove-Item -WhatIf
Configurare il browser per la selezione automatica
Con Edge/Chrome è possibile dire al browser: “su questi URL usa automaticamente un certificato che combaci con determinati criteri”. Il criterio chiave è AutoSelectCertificateForUrls (gestibile via GPO/Intune/registro gestito).
Distribuzione con GPO per Microsoft Edge
- Apri l’Editor Criteri di gruppo.
- Vai a Configurazione computer (o Utente) → Modelli amministrativi → Microsoft Edge.
- Apri AutoSelectCertificateForUrls e imposta su Attivata.
- Aggiungi una voce per riga nel formato JSON seguente.
Esempio base per un portale VPN che usa certificati emessi da “Contoso Issuing CA 01” e destinati all’OU “VPN Users”:
{
"pattern": "https://vpn.contoso.com",
"filter": {
"ISSUER": { "CN": "Contoso Issuing CA 01" },
"SUBJECT": { "OU": "VPN Users" }
}
}
Esempio con wildcard per più host:
{
"pattern": "https://*.contoso.com",
"filter": {
"ISSUER": { "O": "Contoso Corp" },
"SUBJECT": { "O": "Contoso Corp" }
}
}
Suggerimento: dopo l’applicazione del criterio, visita edge://policy
o chrome://policy
per verificarne lo stato e forzare l’aggiornamento delle policy.
Distribuzione con Intune
- In Intune crea un nuovo profilo per Windows 10 e versioni successive → Modello: Modelli amministrativi.
- Seleziona Microsoft Edge e configura AutoSelectCertificateForUrls con le stesse voci JSON (una per riga).
- Assegna il profilo a gruppi di dispositivi/utenti e monitora la conformità.
Distribuzione per Google Chrome
Il criterio omonimo è disponibile anche per Chrome: usa i template amministrativi Google, stesso formato JSON e percorso in GPO/Intune nel ramo di Chrome.
Altri accorgimenti lato client
- Un solo certificato valido per utente/dispositivo è sempre la scelta più semplice (specie con smart card).
- Se il servizio è raggiunto in IE mode, abilita il criterio storico “Non chiedere selezione certificato quando esiste un solo certificato” (effetto limitato a IE/WinINet).
Allineare la fiducia del server e della catena
Se la catena di fiducia non è completa o la CA intermedia è mancante/scaduta, il client può mostrare il prompt anche con un solo certificato installato. Verifica quindi che:
- in Autorità di certificazione intermedie e Radice attendibili siano presenti le CA corrette e aggiornate;
- il certificato del server presenti la catena completa (inclusi i link alle intermedie);
- eventuali CRL/OCSP siano raggiungibili (revoca non indeterminata).
Ottimizzare la richiesta lato server
Il server può ridurre le scelte inviate al client specificando gli issuer accettati:
- IIS/Windows: usa una Certificate Trust List o limita le CA accettate per il sito che richiede client certificate; imponi “Richiedi certificato client” solo dove serve.
- Nginx/Apache: imposta la CA per la verifica del client (sslclientcertificate / SSLCACertificateFile) e richiedi il certificato soltanto nelle location/proxy interessati.
- Reverse proxy/VPN/WAF: filtra a monte e inoltra all’app solo le richieste già autenticate (es. mapping da certificato a header/claim).
Più il CertificateRequest è specifico, meno certificati appariranno nel selettore.
Pulire cache e profili dopo le modifiche
- Riavvia Edge/Chrome (chiudi tutte le finestre e termina i processi se restano in background).
- In Windows, apri Opzioni Internet → Contenuto → Cancella stato SSL per ripulire la cache SChannel in scenari WinINet/IE mode.
- Svuota i dati di navigazione (cookie del sito enterprise e cache) se il portale tratta lo stato di login lato client.
Diagnostica rapida
Obiettivo | Strumento/Metodo |
---|---|
Vedere quali certificati candidati ha il client | certmgr.msc → Personale; Eventualmente PowerShell per filtrare EKU. |
Capire perché un certificato non è selezionabile | Controlla EKU, presenza chiave privata, emittente, scadenza e catena (scheda Percorso certificazione). |
Verificare applicazione dei criteri Edge/Chrome | edge://policy o chrome://policy , quindi Reload policies. |
Tracciare errori di catena/Schannel | Visualizzatore eventi → Registri applicazioni e servizi → Schannel e CAPI2. |
Confermare la lista di CA accettate dal server | Usa uno strumento di test TLS dall’amministrazione (esecuzione su host di test) o chiedi al team server di esportare la configurazione. |
Accorgimenti aggiuntivi e best practice
Obiettivo | Metodo rapido |
---|---|
Evitare del tutto il prompt nel browser | In Edge/Chrome distribuiti via GPO/Intune, usa AutoSelectCertificateForUrls per indicare gli URL che devono usare automaticamente un certificato con Subject/Issuer specifici. |
Limitare i certificati disponibili | Se usi smart card/token, conserva su ogni dispositivo un solo certificato valido o imposta quello di default nel software del fornitore. |
Aggiornare la fiducia del server | Assicurati che le CA intermedie e root siano presenti e non scadute; in caso contrario Windows può mostrare il prompt anche con un solo certificato. |
Ripulire cache e profili | Edge/Chrome possono mantenere stato e sessioni: riavvia il browser, svuota la cache e, se necessario, cancella lo stato SSL di Windows. |
Auto-enrollment AD | Abilita la GPO Certificate Services Client – Auto-Enrollment con l’opzione “Rimuovi certificati revocati/scaduti” per evitare accumulo di duplicati. |
Scenario smart card e token
Con smart card e token USB il certificato risiede sul dispositivo e non nell’archivio software. Note pratiche:
- Usa il minidriver/utility del vendor per rimuovere certificati scaduti dalla card e impostare quello di default.
- Assicurati che il PIN caching non interferisca con il prompt di selezione.
- Verifica il Key Storage Provider: “Microsoft Smart Card Key Storage Provider” è normale per smart card; non confonderlo con i certificati software.
Domande frequenti
Posso disattivare globalmente qualsiasi richiesta di selezione?
No: è parte della sicurezza mTLS. L’approccio corretto è evitare la scelta rendendo univoco il certificato valido e automatizzando la selezione per gli URL interessati.
Perché vedo certificati scaduti nella lista nonostante la pulizia?
Se provengono da una smart card/token, la copia “visibile” è in realtà una proiezione dal dispositivo fisico: rimuovi dalla card via tool del fornitore. Se invece sono in Computer locale, verifica anche certlm.msc
oltre a certmgr.msc
.
È sicuro eliminare certificati scaduti?
Sì, in genere è sicuro rimuovere dal Personale i certificati utente scaduti (non servono più per l’autenticazione). Evita però di toccare certificati di sistema o di servizio se non sei certo del loro uso.
Serve toccare le impostazioni del server?
Se il server invia una lista di CA troppo ampia o inesistente, il client può proporre molti certificati. Restringere gli issuer accettati e abilitare solo dove necessario la richiesta di certificato client aiuta molto.
Funziona anche su dispositivi mobili?
Edge/Chrome su iOS/Android usano lo store certificati del sistema. L’idea rimane la stessa: installare un solo certificato valido e, se disponibile, usare policy MDM per l’auto‑selezione.
Playbook per amministratori
- Mappatura degli URL: elenca gli endpoint che richiedono mTLS (portali, proxy, VPN SSL, API, Wi‑Fi captive).
- Normalizza il rilascio: un solo template di Certificate Authority per ogni scenario (es. “VPN‑Utenti”), rinnovato in sostituzione, con auto‑enrollment e rimozione dei revocati/scaduti.
- Distribuisci AutoSelect: crea policy Edge/Chrome con pattern e filtri per Issuer/Subject coerenti con il template.
- Riduci la superficie: limita la richiesta di certificato lato server solo dove necessario; invia l’elenco CA corretto.
- Fai pulizia: script di bonifica certificati scaduti e duplicati su endpoint; supporto dedicato per smart card.
- Monitora: controlla Event Viewer (Schannel/CAPI2), verifica policy applicate e raccogli feedback utenti (“il prompt è sparito?”).
Checklist finale
- Il certificato valido è installato e contiene EKU Client Authentication.
- Nell’archivio utente esiste un solo certificato idoneo per quell’uso.
- Edge/Chrome hanno il criterio AutoSelectCertificateForUrls per gli URL aziendali.
- Le CA intermedie e radice sono aggiornate e presenti sia lato client sia lato server.
- Il server invia un CertificateRequest con issuer specifici (dove possibile).
- Cache ripulita e browser riavviato.
Conclusioni
Eliminare il prompt “Seleziona un certificato per l’autenticazione” in Windows 11 non richiede soluzioni invasive: basta ridurre le alternative a una sola credenziale valida e automatizzare la scelta per gli URL d’impresa. La combinazione di pulizia dell’archivio, policy AutoSelectCertificateForUrls e corretta configurazione della catena/issuer lato server offre un accesso fluido e impeccabile, riducendo errori e ticket di assistenza.