Https con Ubuntu in Apache. Come si installa ?
Configuriamo Apache Web Server con un certificato autoprotto
Il Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL) (le cui versioni SSL v2 e v3 sono considerate insicure) sono dei protocolli crittografici di presentazione usati nel campo delle telecomunicazioni e dell’informatica che permettono una comunicazione sicura dalla sorgente al destinatario (end-to-end) su reti TCP/IP (come ad esempio Internet) fornendo autenticazione, integrità dei dati e cifratura operando al di sopra del livello di trasporto.
Diverse versioni del protocollo sono ampiamente utilizzate in applicazioni come i browser, l’e-mail, la messaggistica istantanea e il voice over IP. Un esempio di applicazione di SSL/TLS è nel protocollo HTTPS. (Wiki)
Il protocollo TLS consente alle applicazioni client/server di comunicare attraverso una rete in modo tale da prevenire il ‘tampering’ (manomissione) dei dati, la falsificazione e l’intercettazione.
L’HyperText Transfer Protocol over Secure Socket Layer (HTTPS), (anche noto come HTTP over TLS, HTTP over SSL e HTTP Secure) è un protocollo per la comunicazione sicura attraverso una rete di computer, il quale è largamente utilizzato su Internet. HTTPS consiste nella comunicazione tramite il protocollo HTTP (HyperText Transfer Protocol) all’interno di una connessione criptata dal Transport Layer Security (TLS) o dal suo predecessore, Secure Sockets Layer (SSL). Il principio che sta alla base di HTTPS è quello di avere:
- un’autenticazione del sito web visitato
- protezione della privacy
- integrità dei dati scambiati tra le parti comunicanti.
Facciamolo
Https con Ubuntu
Si suppone che sia installato che il Server Web Apache. Se volete installare LAMP (Linux – Apache – MySQL – PHP) e non sapete come fare , si puo’ seguire questa guida. Altrimenti se volete installare solo il Server Web Apache , potete omettere i passaggi per l’installazione di MySQL e PHP.
Creiamo il certificato SSL
Il comando e’ semplice
sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/apache-ssl_cert.key -out /etc/ssl/certs/apache-ssl_cert.key.crt
openssl vi chiedera’ delle informazioni ….
Se dovete creare un certificato , e non siete una CA ( in crittografia, una Certificate Authority o Certification Authority (CA), letteralmente Autorità Certificativa, è un ente di terza parte (trusted third party), pubblico o privato, abilitato a rilasciare un certificato digitale tramite procedura di certificazione che segue standard internazionali) e volete solo implementarlo per rendere sicura la vostra connessione o per fare test … potete rispondere come di seguito. Altrimenti i campi dovranno essere valorizzati con attenzione
Country Name (2 letter code) [AU]:IT
State or Province Name (full name) [Some-State]:Paperilandia Locality
Name (eg, city) []:Paperopoli
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Aiutocomputerhelp
Organizational Unit Name (eg, section) []:Facciamolo
Common Name (e.g. server FQDN or YOUR name) []:testsss
Email Address []:paperino@paperilandia.pk
Mentre stiamo usando OpenSSL, dobbiamo anche creare il gruppo Diffie-Hellman, che viene utilizzato nella negoziazione Perfect Forward Secrecy con i client.
Configuriamo Apache
(Virtual Host)
Ricordando di aver creato il certificato e la chiave in etc/ssl
sudo nano /etc/apache2/sites-available/default-ssl.conf
Ci troveremo di fronte (con 16.04) a qualcosa di simile
Modificare cio’ che e’ in Bold ..
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/MiaCartella <——- Cartella di wwroot
# Available loglevels: trace8, …, trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with “a2disconf”.
#Include conf-available/serve-cgi-bin.conf
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/apache2/ssl/apache-ssl_cert.key.crt <—– Certificato
SSLCertificateKeyFile /etc/apache2/ssl/apache-ssl_cert.key.key <—– Chiave
Attiviamo SSL Virtual Host
( attiviamo https con Ubuntu )
sudo a2ensite default-ssl.conf
Facciamo ripartire Apache
sudo service apache2 restart
Finito
Quindi, ora possiamo provare con https://indirizzo_ip
dovrebbe andare tutto ok , e abbiamo il nostro https con Ubuntu !
Ora le nostre comunicazioni client/server sono sicure, con un certificato non riconosciuto, ma sicure , ora abbiamo un server https con Ubuntu .