Unnikked - Esperienze personali in campo informatico

Come configurare un certificato wildcard SSL su Apache

Abbiamo visto come sia possibile configurare un certificato SSL su Apache per rendere più sicure le connessioni effettuare verso un sito web.

Nel caso in cui hanno diversi sottodomini è naturale chiedersi se è possibile utilizzare uno stesso certificato per ognuno di essi. E’ possibile ottenere questo risultato utilizzando un certificato wildcard.

Questo articolo sarà molto breve e sintetico, illustrerò i comandi da utilizzare necessari per la configurazione di un certificato wildcard.

Per approfondire la configurazione dei Virtual Host di Apache per i sottodomini e la configurazione del certificato SSL rimando ad altri miei articoli linkati in questo paragrafo.

Riferendoci al dominio unnikked.tk come caso d’uso, generiamo un certificato wildcard per tutti i sottodomini *.unnikked.tk.

Da terminale digitiamo:

mkdir /etc/ssl/shared
cd /etc/ssl/shared
openssl genrsa 2048 > host.key
openssl req -new -x509 -nodes -sha1 -days 3650 -key host.key > host.cert

Il path di riga 1 e 2 può essere sostituito con uno di vostra scelta. Nella riga 3 generiamo una chiave privata a 2048 bit utilizzando l’algoritmo RSA. Infine nella riga 4 generiamo il certificato valido per 3650 giorni, ovvero all’incirca 10 anni.

Successivamente ci verrà mostrato a video il classico procedimento per inserire i dati del certificato, alla voce Common Name inseriamo *.unnikked.tk .

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:*.unnikked.tk               
Email Address []:webmaster@awesomeinc.com

Dopo aver creato il certificato wildcard digitiamo i seguenti comandi:

openssl x509 -noout -fingerprint -text < host.cert > host.info
cat host.cert host.key > host.pem
chmod 400 host.key host.pem

Ora siamo pronti per utilizzare il certificato wildcard per i nostri sottodomini, particolare attenzione va prestata durante la definizione delle direttive SSLCertificateFile e SSLCertificateKeyFile :

SSLEngine On
SSLCertificateFile /etc/ssl/shared/host.pem
SSLCertificateKeyFile /etc/ssl/shared/host.key

Una volta configurati i file di Virtual Host per ogni sottodominio ricarichiamo la configurazione di Apache:

service apache2 reload

Potrebbe essere mostrato il seguente messaggio di warning:

[warn] _default_ VirtualHost overlap on port 443, the first has precedence

Basta inserire nel file /etc/apache2/ports.conf dentro la direttiva <IfModule mod_ssl.c>:

NameVirtualHost *:443

Riavviamo Apache per testare i sottodomini abilitati per la fruizione tramite protocollo https.