Questa guida spiega come viene generata una Certificate Signing Request (CSR) per un certificato di code signing quando si lavora con OpenSSL e, altrettanto importante, quando questo approccio non è più applicabile. Dal 1° giugno 2023, le regole per le chiavi di code signing sono cambiate, quindi il vecchio flusso di lavoro basato solo su software con OpenSSL non è accettato dalle Certificate Authority per un certificato di code signing pubblicamente attendibile. Leggi prima il requisito riportato di seguito, poi segui il percorso corrispondente al modo in cui la tua chiave viene memorizzata.
Importante: le chiavi di code signing devono trovarsi su hardware
In base ai CA/Browser Forum Code Signing Baseline Requirements, in vigore dal 1° giugno 2023, la chiave privata di ogni certificato di code signing pubblicamente attendibile, sia standard (OV) sia Extended Validation (EV), deve essere generata e memorizzata in un modulo crittografico hardware conforme a FIPS 140-2 Level 2, Common Criteria EAL4+, o uno standard equivalente. La chiave deve essere non esportabile. Il code signing EV ha sempre richiesto l’hardware; questa regola ha esteso la stessa protezione ai certificati standard.
La conseguenza pratica: una chiave privata e una CSR generate esclusivamente in software con OpenSSL semplice su un laptop o un server non sono più accettate per l’emissione di un certificato di code signing pubblicamente attendibile. Le Certificate Authority hanno smesso di supportare la generazione delle chiavi tramite browser e le CSR software per questi prodotti. La tua chiave ora si trova in uno di questi luoghi:
- Un token hardware spedito a te (ad esempio una YubiKey o un eToken SafeNet/Thales). Con il metodo di consegna token + spedizione, la Certificate Authority genera la chiave sul dispositivo e gestisce la CSR, quindi non ne crei una con OpenSSL.
- Un Hardware Security Module (HSM) che controlli tu, on-premise o basato su cloud. Qui generi la chiave all’interno dell’HSM e produci una CSR più un’attestazione della chiave che dimostra che questa è stata creata in hardware.
- Un servizio di firma cloud che conserva la chiave in un HSM conforme per tuo conto.
Scegli il tuo percorso in base a come prevedi di ricevere e memorizzare il certificato. Per una panoramica, consulta la guida sui metodi di consegna del code signing. Per i passaggi relativi alla CSR con supporto hardware e all’attestazione, segui la guida corrispondente al tuo dispositivo:
- YubiKey 5 FIPS: generazione della CSR e attestazione
- Luna Network Attached HSM v7.x: guida alla CSR e all’attestazione
Se utilizzi un HSM diverso, genera la CSR con gli strumenti di quel fornitore in modo che la chiave rimanga nell’hardware. Il comando OpenSSL req mostrato più avanti ha ancora un ruolo in questi flussi di lavoro quando OpenSSL comanda l’HSM tramite un provider o un motore (engine), ma deve fare riferimento a una chiave già presente nel modulo, mai a un semplice file di chiave software per un certificato pubblicamente attendibile.
Quando il metodo software con OpenSSL è ancora applicabile
Il flusso di lavoro software descritto di seguito produce un file di chiave su disco. Ciò è accettabile solo per casi che non riguardano un certificato di code signing pubblicamente attendibile, come ad esempio:
- Firma interna o di test con una CA privata/aziendale, dove la conservazione della chiave è regolata dalla tua politica, non dalle regole pubbliche del CA/Browser Forum.
- Apprendere la struttura dei comandi OpenSSL prima di passare a un token o a un HSM.
- Preparare i dettagli del soggetto e la sintassi del comando che riutilizzerai quando genererai la vera CSR usando la tua chiave hardware.
Non inviare una chiave e una CSR generate via software a una Certificate Authority pubblica per un certificato di code signing OV o EV. Verrà rifiutata. Chiarito questo limite, ecco il processo OpenSSL e i comandi coinvolti.
1. Scarica e installa OpenSSL
Se OpenSSL non è già presente sul tuo computer, scarica una build aggiornata (OpenSSL 3.x o successiva) per il tuo sistema operativo e installala. macOS e la maggior parte delle distribuzioni Linux includono già OpenSSL; su Windows in genere si installa una build di terze parti. Conferma l’installazione e la versione con:
openssl version
2. Apri un terminale e carica OpenSSL
Su Windows, premi il tasto Windows + R, digita cmd e premi Invio. Per i comandi che scrivono file in cartelle protette, esegui il Prompt dei comandi come amministratore: fai clic destro sull’icona del Prompt dei comandi e seleziona Esegui come amministratore. Puoi anche digitare cmd nella barra di ricerca della barra delle applicazioni e aprire da lì il Prompt dei comandi. Su macOS o Linux, apri l’applicazione terminale.
Se il binario di OpenSSL non è nel percorso di sistema su Windows, spostati prima nella sua cartella di installazione, usando il percorso corrispondente alla tua build:
cd OpenSSL-Win32bin
cd "Program FilesOpenSSL-Win64bin"
3. Genera la chiave privata e la CSR
Genera prima la chiave privata. I certificati di code signing richiedono una chiave robusta: usa una chiave RSA a 3072 bit (o superiore), che è il minimo comune per il code signing, oppure una chiave ECDSA sulla curva P-256. Per creare una chiave RSA a 3072 bit:
openssl genrsa -out code_signing_key.key 3072
Poi genera la CSR a partire da quella chiave. OpenSSL utilizza SHA-256 per la firma della richiesta per impostazione predefinita nelle versioni attuali:
openssl req -new -key code_signing_key.key -out code_signing_csr.txt
4. Completa i campi della CSR
OpenSSL richiede i dettagli che identificano il titolare del certificato. Inserisci informazioni accurate e aggiornate che corrispondano ai registri legali della tua organizzazione, poiché la CA le verifica. Sostituisci gli esempi con i tuoi dettagli:
- Paese (C): il codice paese a due lettere in cui la tua azienda è registrata o in cui risiedi, ad esempio US.
- Stato o Provincia (ST): il nome completo dello stato o della provincia, ad esempio California.
- Località (L): la città in cui la tua azienda è registrata, ad esempio San Jose.
- Nome dell’organizzazione (O): il nome ufficiale e legale della tua organizzazione, oppure il tuo nome legale completo se il certificato è per un individuo, ad esempio GPI Holding LLC.
- Unità organizzativa (OU): il reparto che richiede il certificato, ad esempio IT. Questo campo è opzionale.
- Nome comune (CN): il nome legale della tua organizzazione, oppure il tuo nome completo per un certificato individuale. Per il code signing, il Common Name è l’identità che appare come editore.
- Indirizzo email: un indirizzo email di contatto valido.
Puoi lasciare vuoti i campi opzionali challenge password e nome azienda opzionale: basta premere Invio a quelle richieste.
Puoi anche combinare i passaggi 3 e 4 in un unico comando. Il flag -subj fornisce il soggetto in linea in modo che OpenSSL non chieda nulla, e -nodes lascia la chiave non cifrata su disco (OpenSSL 3.x ha rinominato questo flag in -noenc, ma -nodes funziona ancora). Nota che il valore usa virgolette diritte, non curve, e l’intera stringa è racchiusa in un’unica coppia di virgolette:
openssl req -new -newkey rsa:3072 -nodes -keyout code_signing_key.key -out code_signing_csr.txt -subj "/C=US/ST=California/L=San Jose/O=GPI Holding LLC/OU=IT/CN=GPI Holding LLC"
5. Verifica la CSR
Prima di inviare qualsiasi cosa, conferma che la CSR sia valida e che i suoi dettagli siano corretti. Questo comando stampa il soggetto decodificato e verifica la firma della richiesta:
openssl req -noout -text -verify -in code_signing_csr.txt
Verifica che la riga Subject elenchi il paese, l’organizzazione e il common name esattamente come previsto, che la dimensione della chiave pubblica sia di 3072 bit o più (oppure una chiave ECDSA), e che l’algoritmo di firma sia SHA-256. Dovresti anche vedere un messaggio verify OK, che confirma che la CSR è stata firmata dalla sua chiave privata corrispondente.
6. Sposta la chiave privata e la CSR in una directory sicura
Sposta la chiave privata e la CSR fuori dalla cartella di OpenSSL in una directory che controlli. Mantieni la chiave privata segreta e non condividerla mai con nessuno esterno alla tua organizzazione: chiunque la possieda può firmare software a tuo nome. Su Windows, crea una cartella e sposta i file all’interno:
md c:codesigningcertificates
move code_signing_key.key c:codesigningcertificates
move code_signing_csr.txt c:codesigningcertificates
7. Invia la CSR alla tua CA
Apri il file CSR in un qualsiasi editor di testo semplice, come il Blocco note, e copia il suo intero contenuto, incluse le righe —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—–, nel modulo di registrazione durante l’ordine del certificato. Un blocco CSR ha questo aspetto:
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAw...
...base64 encoded request...
-----END CERTIFICATE REQUEST-----
Ricorda la regola indicata all’inizio di questa guida: per un certificato di code signing pubblicamente attendibile, la CSR che invii deve corrispondere a una chiave generata e conservata in hardware conforme. Se hai generato una chiave software con i passaggi precedenti, usala solo per firme interne o di test. Per un ordine con una CA pubblica, genera la CSR dal tuo token o HSM seguendo la guida YubiKey o Luna HSM, oppure lascia che sia la CA a generare la chiave quando scegli il metodo di consegna token + spedizione.
Per la sintassi generale di OpenSSL oltre alla creazione della CSR, il riferimento sui comandi OpenSSL è un utile complemento. Puoi anche esplorare altri tutorial su OpenSSL e tutorial sul code signing, oppure leggere altri modi per generare una CSR.
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

