Passa ai contenuti principali

Server Aruba Cloud - CentOS 7 - Installare i certificati SSL di Let's Encrypt


Abbiamo già discusso in alcuni post precedenti come installare SSL sia sul Server Singolo che su quello Multi PHP (in bibliografia verranno inseriti i link di riferimento).

Uno dei problemi più grossi quando si approccia SSL è il costo dei certificati emessi dagli enti di certificazione.

Per una fase preliminare di studio abbiamo proposto ZeroSSL, che forniva per 90 giorni un certificato gratuito, ma alla fine del periodo o si compra o si sceglie una strada alternativa.

Da quando SSL è diventato uno standard obbligatorio de facto, è stato costituito un consorzio  chiamato Let's Encrypt sponsorizzato dai big dell'informatica (tre nomi su tutti: IBM, Amazon Web Service e Facebook), che fornisce gratuitamente i certificati SSL necessari al sistema.


Da dove partiamo in relazione al nostro sistema

A differenza di ZeroSSL, dove esiste un sito, che a seguito di una registrazione restituisce un certificato in download, Let's Encrypt utilizza un programma in locale che va installato nel nostro sistema.

Ricordo, a quanti lettori siano passati da questa pagina direttamente, che nel corso delle "puntate precedenti" abbiamo costruito due tipologie di server su Aruba Cloud CentOS 7 (banalmente il più economico in rapporto prezzo/prestazioni dotato di indirizzo IP pubblico statico, quantomeno per usare oggetti complessi come quelli descritti)

Ma come già detto in bibliografia ci sono tutti i link dei post precedenti.

Nel post Server Aruba Cloud - CentOS 7 - Installare Virtual Host SSL su Apache2 (porta 443), abbiamo installato Mod_SSL, il modulo che ci consente di accedere al nostro web server non solo da porta 80, quella standard usata da Sir Tim Berners-Lee / Robert Cailliau nel suo progetto iniziale del World Wide Web (sito superiore che accede al primo sito web) messo in funzione il 6 agosto 1991, ma la 443 che consente di creare una connessione tra due entità client/server mediante l'uso di un certificato che ci assicura che le informazioni sono criptate, rendendo sicuro lo scambio dei dati.


Allo stesso modo, abbiamo installato Mod_SSL anche sul server multi php come descritto nel post Server Aruba Cloud - CentOS 7 - Server LAMP multi PHP - Apache2 - Gestire domini con e senza SSL scegliendo la versione di PHP.


Visto che l'installazione è la stesso per il Mod_SSL e quello che cambia è nella scrittura del VirtualHost (VH), allora useremo come punto di partenza il server Multi PHP.


Il programma certbot

Il programma certbot è quello che ci consente di poter creare i certificati.

Per installare certbot abbiamo bisogno della repository EPEL, utilizziamo il comando sottostante per abilitarlo:

yum -y install epel-release


Installiamo yum-utils:

yum -y install yum-utils


E infine certbot per Apache:


yum -y install certbot python2-certbot-apache

A installazione completata 

eseguiamo questo comando per avviare la configurazione del certificato:

certbot


Ci viene richiesto di inserire una mail di contatto per ricevere eventuali comunicazioni sulla
Fatto ciò compare la seconda schermata e terza schermata


A questo punto il programma analizza quali sono i VirtualHost (VH) che abbiamo sulla macchina che vogliamo trasformare in SSL.


A questo il sistema fa l'analisi dei domini installati e mostra la lista.

Quando abbiamo costruito il Server Multi PHP (non SSL) abbiamo usato due domini per mostrare le due versioni di PHP.

Aggiungo  che a differenza di quanto espresso in precedenza del file unico di ssl.conf nella cartella /etc/httpd/conf.d dove c'erano tutti i file su porta 443 che su porta 80, in questo server usammo i file singoli, ovvero tmm.2cg.it.conf e tmm2.2cg.it.conf.

Attiviamo SSL con Let's Encrypt su tutti e due e vediamo il risultato lato web








Le modifiche dei file .conf

A questo punto, però, cosa accade nella "stanza dei bottoni"?

Cioè che modifiche ha fatto il programma certbot ai file?


Riporto il testo del VH tmm.2cg.it nelle due versioni:

########################
###### Porta 80 - Inizio
###
### - tmm.2cg.it
### - Con accesso con .htaccess
### - e con error.log
###### 
<VirtualHost tmm.2cg.it>
    DocumentRoot "/var/www/html/php56"
    #ServerName tmm.2cg.it


    # Parametri della struttura in php 5.6
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    AddHandler php56-fcgi .php
    Action php56-fcgi /cgi-bin/php56.fcgi


    # Parametri della cartella in PHP 5.6
    <Directory /var/www/html/php56>
DirectoryIndex index.php
AllowOverride all
Require all granted
    </Directory>

RewriteEngine on
RewriteCond %{SERVER_NAME} =tmm.2cg.it
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

Sostanzialmente sulla macchina, come mostrato anche in altre occasioni, abbiamo due domini uno su porta 80 ed uno su porta 443, che possono, in teoria, lavorare diversamente.

certbot ha modificato il VH aggiungendo delle righe alla fine (in giallo) che reindirizzano tutte le richieste da http -> https.

Tutte le richieste della pagina, sono, così  reindirizzate sulla parte SSL.

Ma com'è fatto il VH della parte SSL?

<IfModule mod_ssl.c>
<VirtualHost tmm.2cg.it:443>

    DocumentRoot "/var/www/html/php56"

    #ServerName tmm.2cg.it


    # Parametri della struttura in php 5.6

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

    AddHandler php56-fcgi .php

    Action php56-fcgi /cgi-bin/php56.fcgi



    # Parametri della cartella in PHP 5.6

    <Directory /var/www/html/php56>

DirectoryIndex index.php

AllowOverride all

Require all granted

    </Directory>

ServerName tmm.2cg.it

SSLCertificateFile /etc/letsencrypt/live/tmm.2cg.it/cert.pem

SSLCertificateKeyFile /etc/letsencrypt/live/tmm.2cg.it/privkey.pem

Include /etc/letsencrypt/options-ssl-apache.conf

SSLCertificateChainFile /etc/letsencrypt/live/tmm.2cg.it/chain.pem
</VirtualHost>
</IfModule>


Mentre nel file unico di ssl.conf, il programma avrebbe aggiunto alla parte Porta 80 le righe in giallo riportate nel primo VH ed aggiunto i certificati nuovi nella parte Porta 443 (chi vuole può sperimentare...), qui il sistema ha dovuto effettuare un altro tipo di "lavoro": attivare un VH con SSL (il codice <IfModule mod_ssl.c>), dire su quale porta essere in ascolto (la 443: <VirtualHost tmm.2cg.it:443>) e quali sono i certificati da usare e dove stanno (le ultime righe in giallo)

Automaticamente ha riavviato il server apache alla chiusura del programma ed il risultato è quello mostrato in precedenza (o fotocopertina del post)


Bibliografia

Server Aruba Cloud - CentOS 7 - Installare un Web Server LAMP multi PHP (PHP 5.6 e PHP 7.3)

Server Aruba Cloud - CentOS 7 - Installare Virtual Host SSL su Apache2 (porta 443)

Server Aruba Cloud - CentOS 7 - Server LAMP multi PHP - Apache2 - Gestire domini con e senza SSL scegliendo la versione di PHP










Commenti

Post più popolari

Mac OS X - Installare ed usare una stampante sul Print Server GetNet 3 Port 2 USB e 1 LPT

Abbiamo visto come installare il Print Server GetNet 3 in 1 sui più diffusi sistemi operativi Windows (vedi articoli correlati in fondo al post). La "scatoletta" ha anche un protocollo di comunicazione Apple Talk, quindi può essere collegata (fare da tramite) anche a stampanti che abbiano la gestione post script integrata (quasi tutte le stampanti salvo quelle del gruppo Ricoh che hanno bisogno di un apposito moduol installato) sul Mac. Print Server GetNet 1 Parallela e 2 USB Il metodo di installazione è molto simile a quello visto su Windows, con la differenza sostanziale che non è necessario scegliere tra moltissimi modelli, ma si gestisce in modo più semplice. Purtroppo sul Mac non è possibile (allo stato attuale) collegare print server di tipo TP-Link, ovvero replicatori di porta USB su Lan, in quanto non esiste un driver adatto. Detto questo, consideriamo la stampante che vogliamo collegare al Mac. Il caso che abbiamo usato nei precedenti post,

BlackBerry - Importare i dati da altri cellulari

English translated post Un amico mi porta un BlackBerry Pearl 8110 e mi chiede di trasferire i dati dal suo cellulare Nokia a questo telefono. Premesso che personalmente non ho mai reputato il BlackBerry un telefono "semplice", l'operazione si è reputata piuttosto complessa. Scartata l'idea di mandare i vcard via bluetooth (come si fa con quasi tutti i Nokia e Samsung), l'unica alternativa è quella di appoggiarsi a Microsoft Outlook !!! Come fare? 1 - Installare il Microsoft Outlook (XP o 2003) nel proprio PC 2 - Installare (nel caso specifico del Nokia) il programma Nokia PC Suite 3 - Sincronizzare solo la Rubrica (ovviamente dipende sempre se il cellulare Nokia è il Vostro o di un Vostro amico) del Nokia con l'Outlook, così che tutti i dati presenti nella Rubrica siano copiati nella sezione Contatti dell'Outlook 4 - Scaricare l'ultima versione del BlackBerry Desktop Manager (se il pacchetto è quello Vodafone, la versione sul CD non è mo

Joomla! - Mettere la testata in Stampa

Come è noto Joomla! è uno dei più usati CMS (Content Managment System) che consente di avere un ambiente (environment) sul quale costruire e sviluppare siti e portali. Uno dei problemi più noti è quello di poter inserire la testata nel file da stampare. Ad esempio se il mio sito si chiama dicecca.net - Blog ed ha un logo particolare che voglio pubblicare come testata, nella conformazione classica, non posso farlo. Come risolvere? Premesso che tutto il sistema è scritto in linguaggio PHP, il file che viene chiamato in causa è component.php che si trova nella cartella /[sito (1)] /templates/system Il file ( che è possibile scaricare qui in formato testo ), alla riga 40 inizia il Body del testo. Alla riga 41 inizia l'inclusione del testo dell'articolo che si è deciso di stampare, che a sua volta viene aperto in una finestra popup. Dando un taso invio, dalla riga 41 è possibile inserire il riferimento ad una immagine e/o un formattato HTML della testata del nos