Basi

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)

https con Ubuntu

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 TLSHTTP 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:

  1. un’autenticazione del sito web visitato
  2. protezione della privacy
  3. 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 .

(net::ERR_CERT_AUTHORITY_INVALID).
(net::ERR_CERT_AUTHORITY_INVALID).