Questa guida mostra come generare un CSR (Certificate Signing Request) su Windows utilizzando gli strumenti forniti con il sistema operativo.
Il CSR è un blocco di testo PKCS #10 che trasporta la tua chiave pubblica e i dettagli del soggetto alla Certificate Authority, la quale lo firma e restituisce il tuo certificato SSL/TLS. La chiave privata corrispondente rimane sulla macchina che genera la richiesta.
Windows offre tre modi nativi per creare un CSR, ognuno dei quali è trattato di seguito. Scegli quello più adatto al tuo flusso di lavoro:
- Lo snap-in MMC Certificati (grafico), che ti guida attraverso una procedura guidata e ti permette di aggiungere un Subject Alternative Name. Questo è il percorso trattato nel tutorial originale, ed è quello preferito dalla maggior parte degli utenti.
- Lo strumento da riga di comando certreq.exe con un file INF, che è scriptabile, supporta il SAN, ed è il metodo standard su Windows Server.
- Il binario OpenSSL per Windows (un download separato), che produce il CSR esattamente come fanno gli amministratori Linux.
Se gestisci un web server con un proprio flusso di lavoro per il CSR, usa quello invece dei passaggi generici di Windows: consulta le guide dedicate per IIS e Microsoft Exchange. I passaggi seguenti riguardano Windows 10, Windows 11 e Windows Server dal 2016 al 2025; accedi con un account che disponga di diritti di amministratore locale prima di iniziare.
Generare un CSR con lo snap-in MMC Certificati
La Microsoft Management Console (MMC) è fornita con ogni versione supportata di Windows ed espone una procedura guidata Create Custom Request in grado di creare un CSR con una voce SAN. La procedura guidata memorizza la nuova chiave privata nell’archivio certificati Local Computer, quindi qualsiasi servizio Windows presente sulla macchina (IIS, ADFS, RD Gateway, RDP) potrà utilizzare il certificato emesso una volta installato.
Passaggio 1: Apri lo snap-in MMC Certificati per il Local Computer
Premi Win + R, digita il comando sotto e premi Invio:
mmc
Nella console MMC vuota, apri File > Add/Remove Snap-in. Seleziona Certificates nella lista a sinistra, fai clic su Add, scegli Computer account, fai clic su Next, lascia selezionato Local computer e fai clic su Finish, poi su OK. Lo snap-in Certificati è ora ancorato all’archivio Local Computer, che è quello da cui i servizi Windows leggono.
Passaggio 2: Avvia una richiesta di certificato personalizzata
Nel riquadro a sinistra, espandi Certificates (Local Computer) e fai clic destro su Personal. Scegli All Tasks > Advanced Operations > Create Custom Request. Si apre la procedura guidata Certificate Enrollment. Fai clic su Next.
Nella schermata Select Certificate Enrollment Policy, seleziona Proceed without enrollment policy sotto Custom Request e fai clic su Next. In questo modo Windows creerà un CSR autonomo per una CA esterna, invece di registrare rispetto a un modello interno di Active Directory Certificate Services.
Passaggio 3: Scegli il modello e il formato della richiesta
Nella schermata Custom request, imposta Template su (No template) CNG key, lascia Request format su PKCS #10 e fai clic su Next. CNG (Cryptography Next Generation) è il moderno provider di chiavi di Windows ed è la scelta giusta per le nuove richieste; l’opzione CSP legacy serve solo per la compatibilità con applicazioni più vecchie.
Nella schermata Certificate Information, espandi la freccia Details vicino alla voce della richiesta e fai clic su Properties. La finestra di dialogo Certificate Properties è dove viene configurato il resto del CSR.
Passaggio 4: Compila il soggetto e i Subject Alternative Name
Nella scheda General, digita un nome descrittivo e una descrizione opzionale in modo da poter identificare successivamente la richiesta in sospeso nell’archivio certificati.
Passa alla scheda Subject. In Subject name, lascia Type su Full DN solo se sai cosa stai facendo; per la maggior parte degli ordini, aggiungi ogni componente uno alla volta usando il menu a discesa Type. Per ogni attributo qui sotto, scegli il tipo, digita il valore e fai clic su Add:
- Common Name: il nome di dominio completamente qualificato che vuoi proteggere, ad esempio www.tuodominio.com. Per un certificato wildcard, metti un asterisco davanti al dominio principale, ad esempio *.tuodominio.com.
- Country: il codice ISO a due lettere del paese, ad esempio US, GB o DE.
- State: il nome completo dello stato o della provincia (ad esempio California, non CA).
- Locality: il nome completo della città in cui è registrata la tua organizzazione (ad esempio San Jose, non SJ).
- Organization: il nome legale della tua azienda, esattamente come registrato. Obbligatorio per i certificati OV ed EV. Per i certificati a Validazione di Dominio (DV), questo campo viene ignorato, quindi qualsiasi valore segnaposto va bene.
Salta l’attributo Email. L’RFC 5280 stabilisce che i nuovi certificati con un indirizzo email devono inserirlo nell’estensione Subject Alternative Name (come rfc822Name), non nel Distinguished Name del soggetto, e le CA pubbliche possono rimuovere un valore email dal soggetto di un certificato TLS. Ometterlo mantiene il CSR pulito.
Nella sezione Alternative name della stessa scheda, imposta Type su DNS e aggiungi ogni hostname che il certificato deve coprire, un clic su Add per ogni voce. Elenca sempre anche qui il Common Name: browser, .NET, Java, Go e altri client TLS moderni convalidano l’hostname strettamente rispetto all’elenco SAN e ignorano il Common Name. Un tipico certificato per siti web usa due voci DNS:
- tuodominio.com
- www.tuodominio.com
Per un ordine wildcard, aggiungi sia il wildcard che il dominio principale: *.tuodominio.com e tuodominio.com.
Passaggio 5: Configura la chiave e la firma
Passa alla scheda Private Key ed espandi ogni sezione a turno.
- Cryptographic Service Provider: lascia selezionato il valore predefinito RSA, Microsoft Software Key Storage Provider. Questo è il moderno provider CNG per le chiavi RSA.
- Key options: imposta Key size su 2048 (il minimo attualmente richiesto dalle CA pubbliche). Scegli 3072 o 4096 solo se la tua policy richiede una chiave più grande; il compromesso è un handshake TLS leggermente più lento. Seleziona Make private key exportable se vuoi la possibilità di eseguire il backup della chiave o spostare il certificato emesso su un altro server.
- Select Hash Algorithm: nella sezione Select hash algorithm, scegli sha256. SHA-1 non è più accettato dalle CA pubbliche e SHA-256 è ormai lo standard predefinito. Lascia disattivata la casella Use alternate signature format.
Fai clic su OK per chiudere la finestra di dialogo delle proprietà, poi fai clic su Next nella procedura guidata.
Passaggio 6: Salva il file CSR
Nella schermata Where do you want to save the offline request?, imposta File format su Base 64 (le CA si aspettano un PEM codificato in base64, non binario). Fai clic su Browse, scegli una cartella facile da ritrovare (una cartella dedicata come C:certs o il Desktop sono più comodi del percorso predefinito di Windows), assegna al file un nome con estensione .req o .txt e fai clic su Save. Fai clic su Finish per scrivere il CSR.
La procedura guidata scrive il CSR nel file e memorizza la chiave privata corrispondente in Certificates (Local Computer) > Certificate Enrollment Requests. Non eliminare quella richiesta in sospeso: quando la CA restituisce il certificato emesso, Windows lo associa automaticamente alla chiave in attesa.
Passaggio 7: Copia il CSR e inviarlo alla CA
Apri il file salvato in Notepad. Dovresti vedere un blocco simile a questo:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (molte righe in base64) ...
-----END NEW CERTIFICATE REQUEST-----
Seleziona l’intero blocco, incluse le righe con i cinque trattini BEGIN NEW CERTIFICATE REQUEST e END NEW CERTIFICATE REQUEST, copialo e incollalo nel campo CSR del tuo modulo d’ordine SSL.
Generare un CSR con certreq.exe e un file INF
L’utilità da riga di comando certreq.exe è fornita con ogni versione di Windows Server ed è presente anche sui client Windows 10 e 11. È il metodo giusto quando vuoi scriptare la creazione del CSR, impostare parametri di chiave non comuni, o creare la richiesta da remoto in una sessione che non può eseguire MMC. Il flusso ha tre parti: scrivere un file INF di richiesta, eseguire certreq -new per generare il CSR, poi inviare il CSR alla tua CA.
Passaggio 1: Crea il file INF di richiesta
Apri Notepad come Amministratore e salva il file sotto come request.inf. Modifica la riga Subject e le voci DNS sotto [Extensions] in modo che corrispondano al tuo dominio:
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=www.tuodominio.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.tuodominio.com&"
_continue_ = "dns=tuodominio.com"
Note sui valori:
- Subject: una singola riga con i componenti separati da virgole. Usa il codice ISO a due lettere del paese in C=, e scrivi per intero i nomi di stato e città.
- KeyLength: minimo 2048. Imposta 3072 o 4096 se la tua policy richiede una chiave più grande.
- Exportable = TRUE: ti permette di esportare la chiave privata insieme al certificato emesso (per backup o per installarlo su un secondo server). Impostalo su FALSE se vuoi che la chiave resti bloccata su questa macchina.
- MachineKeySet = TRUE: memorizza la chiave nell’archivio Local Computer, che è quello da cui leggono servizi come IIS. Lascialo attivo per i carichi di lavoro server.
- HashAlgorithm = SHA256: firma la richiesta con SHA-256, lo standard moderno predefinito. Esempi più vecchi a volte usano di default SHA-1, che non è più accettato dalle CA pubbliche.
- 2.5.29.17: l’OID per Subject Alternative Name. Aggiungi una riga _continue_ per ogni hostname; ogni riga tranne l’ultima deve terminare con il separatore &. Elenca anche qui il tuo Common Name, perché i client TLS convalidano rispetto all’elenco SAN.
Passaggio 2: Genera il CSR
Apri un Command Prompt o PowerShell con privilegi elevati, spostati nella cartella che contiene request.inf ed esegui:
certreq -new request.inf request.csr
Lo strumento crea la chiave privata nell’archivio Local Computer e scrive la richiesta PKCS #10 in request.csr. Apri il file, copia l’intero blocco da BEGIN NEW CERTIFICATE REQUEST a END NEW CERTIFICATE REQUEST e incollalo nel tuo modulo d’ordine.
Quando la CA restituisce il certificato emesso, completa l’associazione con:
certreq -accept certnew.cer
Questo associa il certificato emesso alla chiave privata che era in attesa nell’archivio, dopodiché il certificato è disponibile per qualsiasi servizio Windows che ne abbia bisogno.
Generare un CSR su Windows con OpenSSL
Windows non è fornito con OpenSSL, ma una build Windows mantenuta è disponibile da Shining Light Productions. Il flusso con OpenSSL è identico a quello di Linux e produce una chiave e un CSR come due file separati, il che è utile se prevedi di distribuire il certificato su una piattaforma che non usa l’archivio certificati di Windows (ad esempio un reverse proxy di terze parti, Tomcat, o un’applicazione personalizzata).
Installa il pacchetto Win64 OpenSSL Light (l’installer normale è sufficiente per il lavoro con i CSR) e, quando l’installazione lo richiede, copia le DLL di OpenSSL nella directory bin di OpenSSL piuttosto che nella cartella di sistema di Windows. Apri Command Prompt o PowerShell e conferma che OpenSSL sia nel path:
openssl version
Se il comando non viene trovato, aggiungi la cartella di installazione (in genere C:Program FilesOpenSSL-Win64bin) al tuo PATH, oppure chiama openssl con il percorso completo. Poi genera il CSR e la chiave con un unico comando:
openssl req -new -newkey rsa:2048 -nodes -keyout tuodominio.key -out tuodominio.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.tuodominio.com" -addext "subjectAltName=DNS:tuodominio.com,DNS:www.tuodominio.com"
Cosa fa ogni flag:
- -newkey rsa:2048 crea una nuova chiave RSA a 2048 bit. Usa rsa:4096 per una chiave più grande se la tua policy lo richiede.
- -nodes scrive la chiave privata senza passphrase, in modo che il servizio che la utilizza possa leggerla all’avvio senza richiedere input. OpenSSL 3.x ha rinominato questo flag in -noenc; -nodes funziona ancora ma è considerato deprecato.
- -keyout e -out nominano il file della chiave e il file del CSR.
- -subj fornisce il soggetto in linea, così OpenSSL non si ferma a fare domande interattive.
- -addext “subjectAltName=…” aggiunge l’elenco SAN. Includi anche qui il Common Name.
OpenSSL 3.x firma il CSR con SHA-256 per impostazione predefinita, quindi non è necessario alcun flag di digest aggiuntivo. Nota l’intestazione diversa: OpenSSL scrive -----BEGIN CERTIFICATE REQUEST-----, mentre la procedura guidata MMC e certreq scrivono -----BEGIN NEW CERTIFICATE REQUEST-----. Entrambe sono normali richieste PKCS #10 e ogni CA accetta entrambe le forme. Considera il file tuodominio.key risultante come un segreto: chiunque lo possieda può impersonare il certificato.
Verifica il CSR prima di inviarlo
Confermare il Common Name, le voci SAN, la dimensione della chiave e l’algoritmo di firma prima di inviare la richiesta alla tua CA. Dalla riga di comando di Windows, certutil legge qualsiasi file CSR:
certutil -dump request.csr
Se hai installato OpenSSL, il comando equivalente stampa gli stessi dettagli:
openssl req -noout -text -in request.csr
Preferisci usare il browser? Incolla il contenuto della richiesta nel decoder CSR di SSL Dragon per leggere di nuovo il soggetto, l’elenco SAN, la dimensione della chiave e l’algoritmo di firma. Verifica che il Common Name corrisponda all’hostname che i client utilizzeranno, che ogni nome richiesto appaia nell’elenco SAN, e che l’algoritmo di firma sia sha256WithRSAEncryption (o più forte).
Se preferisci generare il CSR fuori dal server, il nostro Generatore CSR crea una richiesta (con SAN) da un unico modulo. Il compromesso è che la chiave privata viene generata nel tuo browser, non nell’archivio di Windows, quindi quando la CA emette il certificato dovrai combinare il certificato e la chiave in un file .pfx e importarlo tramite la console di gestione dei certificati della tua applicazione.
Domande Frequenti
Se stai proteggendo un servizio Windows che legge dall’archivio certificati Local Computer (IIS, ADFS, RDP, RD Gateway, WinRM), usa lo snap-in MMC o certreq.exe: entrambi creano la chiave nel posto giusto, così il certificato emesso è pronto per essere associato. Se stai preparando un CSR per una piattaforma non Windows, o vuoi un file di chiave separato che puoi copiare su un server Linux o su un dispositivo di terze parti, usa OpenSSL su Windows. L’output di tutti i tre metodi è lo stesso CSR PKCS #10 che ogni CA pubblica accetta.
No. L’RFC 5280 stabilisce che i nuovi certificati devono inserire un indirizzo email nell’estensione Subject Alternative Name come rfc822Name, non nel Distinguished Name del soggetto. Le CA pubbliche possono rimuovere un valore email dal soggetto di un certificato TLS durante l’emissione, quindi aggiungerlo non serve a nulla per HTTPS. Lascia fuori il campo Email dalla procedura guidata o dal file INF.
Con lo snap-in MMC o certreq.exe, la chiave si trova in Certificates (Local Computer) > Certificate Enrollment Requests come richiesta in sospeso, e viene associata automaticamente al certificato emesso quando completi la registrazione. Con OpenSSL, la chiave è il file .key scritto vicino al CSR; proteggila come qualsiasi altro segreto e fanne il backup prima di distribuire il certificato.
PowerShell non ha un cmdlet nativo per il CSR. New-SelfSignedCertificate crea una coppia di chiavi, ma produce un certificato autofirmato finito, non un CSR che una CA pubblica possa firmare. Il modo supportato per creare una richiesta da PowerShell è scrivere il file INF mostrato sopra e chiamare certreq.exe su di esso (certreq -new request.inf request.csr). Moduli di terze parti come PSPKI avvolgono certreq con un’interfaccia più semplice, ma lo strumento sottostante è sempre certreq.
La richiesta in sospeso e la sua chiave privata rimangono in Certificates (Local Computer) > Certificate Enrollment Requests. Non fanno nulla da sole e non causano problemi, ma si accumulano nel tempo. Apri lo snap-in MMC Certificati, esamina le richieste in sospeso ed elimina quelle che non ti servono più; questo rimuove anche la chiave corrispondente.
Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!
Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

