Questo tutorial mostra come generare una CSR su Apache utilizzando la riga di comando OpenSSL sullo stesso server che esegue Apache HTTP Server. Creerai due file con un solo comando: una nuova chiave privata e la CSR (Certificate Signing Request) corrispondente da inviare alla tua Certificate Authority.
I passaggi seguenti funzionano su ogni distribuzione Linux moderna che ospita Apache (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), poiché ognuna include OpenSSL 1.1.1 o OpenSSL 3.x. Entrambe le versioni firmano la richiesta con SHA-256 per impostazione predefinita, quindi non è necessario aggiungere un flag per il digest. Lo stesso comando funziona anche su FreeBSD e su macOS con Apache.
Passo 1: Connettiti al tuo server Apache
Apri Terminal su macOS o Linux, oppure PowerShell o Windows Terminal su Windows, e connettiti al server via SSH. Sostituisci il nome utente e l’host con i tuoi:
ssh your-user@your-apache-server
Genera la CSR sullo stesso server che ospiterà il certificato. La chiave privata viene creata insieme alla CSR e deve rimanere su quel server, quindi eseguire il comando sul tuo laptop e poi copiare la chiave altrove vanifica lo scopo. Potresti anche voler svolgere il lavoro in una directory dedicata che puoi ritrovare facilmente in seguito, ad esempio:
sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain
Passo 2: Genera la chiave privata e la CSR
Se hai già generato la tua CSR con un altro strumento, passa direttamente a come installare il certificato su Apache.
Esegui il seguente comando OpenSSL. Crea una chiave RSA a 2048 bit e una CSR in un solo passaggio, con l’oggetto e i Subject Alternative Names (SAN) forniti in linea, così OpenSSL non si interrompe per fare domande:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Cosa fa ciascuna parte:
- -newkey rsa:2048 genera una nuova chiave RSA a 2048 bit. 2048 bit è il minimo attuale per i certificati pubblici; puoi usare rsa:4096 per una chiave più grande, oppure passare a ECDSA (vedi sotto).
- -nodes lascia la chiave privata non cifrata, così Apache può leggerla all’avvio senza richiedere una passphrase.
- -keyout e -out nominano i file della chiave privata e della CSR.
- -subj fornisce l’oggetto del certificato. Inserisci qui il nome reale della tua azienda, lo stato e la città, non i segnaposto. CN (Common Name) è il tuo dominio principale.
- -addext “subjectAltName=…” elenca ogni hostname che il certificato deve coprire. Le CA pubbliche validano in base all’elenco SAN, quindi includi qui anche il Common Name.
Sostituisci yourdomain.com con il tuo dominio effettivo ovunque. Per includere hostname aggiuntivi, aggiungili all’elenco SAN separati da virgole, ad esempio DNS:api.yourdomain.com. Per un certificato wildcard, includi sia il wildcard che il dominio semplice: DNS:*.yourdomain.com,DNS:yourdomain.com. Utilizza solo caratteri alfanumerici nei campi dell’oggetto e usa il codice paese ufficiale a due lettere per il campo C.
Se preferisci una chiave ECDSA (più piccola e veloce, con P-256 ampiamente supportato), genera la chiave e la CSR in questo modo:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Se preferisci rispondere alle richieste un campo alla volta, esegui openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr senza -subj e senza -addext. OpenSSL chiederà ogni campo in sequenza. Quando lo fa:
- Country Name (C): il codice ISO a due lettere del tuo paese, ad esempio US o GB. Per i certificati Business Validation o Extended Validation, deve essere il paese ufficiale di registrazione della tua organizzazione.
- State or Province Name (ST): il nome completo, ad esempio California. Non abbreviare.
- Locality Name (L): la città o il comune, ad esempio San Francisco.
- Organization Name (O): il nome ufficiale registrato della tua azienda, ad esempio GPI Holding LLC. Per i certificati Domain Validation puoi inserire NA.
- Organizational Unit Name (OU): questo campo è deprecato e ignorato dalle CA pubbliche. Lascialo vuoto premendo Invio.
- Common Name (CN): il Fully Qualified Domain Name per cui è destinato il certificato, ad esempio www.yourdomain.com. Per un wildcard, usa *.yourdomain.com.
- Email Address: opzionale e non utilizzato dalle CA pubbliche. Puoi lasciarlo vuoto.
- A challenge password e An optional company name: sono entrambi attributi obsoleti che le CA pubbliche ignorano. Lasciali vuoti.
Senza il flag -addext la CSR risultante non avrà voci SAN. Le CA pubbliche validano in base all’elenco SAN e rifiuteranno (o sovrascriveranno silenziosamente) una richiesta che ne è priva, quindi il percorso consigliato è il comando in linea con -subj più -addext indicato sopra.
Passo 3: Individua i tuoi file
Elenca la directory corrente per confermare che entrambi i file siano stati creati:
ls
Dovresti vedere due nuovi file:
- yourdomain.key: la tua chiave privata. Tienila sul server, eseguine un backup sicuro e non inviarla mai a nessuno, nemmeno alla Certificate Authority. Chi possiede la chiave può impersonare il tuo sito.
- yourdomain.csr: la tua Certificate Signing Request. Questo è il file da inviare al fornitore SSL.
Limita l’accesso alla chiave privata affinché solo il proprietario del file possa leggerla:
chmod 600 yourdomain.key
Passo 4: Verifica la CSR (opzionale ma consigliato)
Prima di inviarla, controlla che la CSR contenga l’oggetto e i SAN corretti e che la sua firma sia valida. Questo decodifica la richiesta localmente con OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Verifica che la riga Subject mostri i tuoi dati, che X509v3 Subject Alternative Name elenchi ogni hostname previsto e che il controllo della firma restituisca verify OK. L’algoritmo di firma dovrebbe indicare sha256WithRSAEncryption (o ecdsa-with-SHA256 per una chiave ECDSA). Se preferisci non usare la riga di comando, incolla la CSR nel nostro decodificatore CSR online per leggere gli stessi campi nel browser.
Passo 5: Invia la tua CSR
Per copiare la CSR per il tuo ordine, stampa il suo contenuto:
cat yourdomain.csr
Vedrai un blocco di testo simile a questo:
-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----
Copia l’intero blocco, incluse le righe —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—– (ogni marcatore ha cinque trattini su entrambi i lati). Quell’intero blocco è la tua CSR. Incollalo nel modulo d’ordine durante l’acquisto e mantieni la chiave privata corrispondente al suo posto sul server.
Se preferisci non usare la riga di comando, puoi anche creare la richiesta con il nostro generatore di CSR online. Nota che genera la chiave privata nel tuo browser, quindi salva tu stesso quella chiave e trasferiscila sul server.
Dopo che la tua CA avrà validato la richiesta, riceverai il tuo certificato. In base al livello di validazione, questo richiede pochi minuti per la Domain Validation, oppure fino a diversi giorni lavorativi per la Business Validation e la Extended Validation.
Passo 6: Installa il certificato su Apache
Quando il certificato arriva, posiziona il certificato rilasciato (inclusi eventuali intermedi concatenati in un unico file fullchain) e la chiave privata sul server, quindi indirizza Apache verso di essi nell’host virtuale del tuo sito:
SSLCertificateFile /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key
Apache moderno (2.4.8 e successivi) legge il certificato foglia e qualsiasi intermedio da un unico file passato a SSLCertificateFile, quindi concatena il tuo certificato e il bundle della CA in un unico file. La vecchia direttiva SSLCertificateChainFile è deprecata e non dovrebbe essere usata sulle versioni attuali di Apache. Verifica la configurazione con apachectl configtest e ricarica Apache per applicare la modifica. Per il flusso di lavoro completo, consulta la nostra guida su come installare un certificato SSL su Apache.
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


