Knowledgebase

Aveti intrebari? Sunteti in locul potrivit!

Configurarea Apache cu Certificat Self-Signed TLS/SSL pe Ubuntu 16.04

SSL este succesorul TLS si adauga un layer de encriptare intre client si server. Fara aceasta tehnologie, datele transmise spre server ca si plain text le permite altor aplicatii third-parties sa citeasca informatiile trimise sau primite spre server-ul dvs.

Acest tutorial va invata cum sa creati un certificat SSL/TLS si sa-l activati pe Apache 2.4 pe Ubuntu 16.04. Presupunem ca aveti deja instalat Apache-ul si este functional, in cazul in care doriti sa invatati cum anume sa faceti instalarea va recomandam sa testati pe un LAMP:

Atentie:

Certificatatele SSL/TLS sunt generatate in mod normal de o autoritate de certificare (CA). Generarea facuta de catre dvs. inseamna ca dvs. sunteti cei care semneaza acest certificat, insemndand ca browserul nu va fi capabil sa verifice daca identitatea certificatului este valida si va notifica clientul. Puteti sa instalati un certificat gratuit de genul Let’s Encrypt care ofera certificat gratuite si sa nu mai primiti respectiva notificare.

Aceasta procedura este recomandata pentru aplicatii interne utilizand un certificat self-signed, poate fi valid mai ales daca nu folositi un nume de domeniu.

Pasul 1: Generarea certificatului
1.1 In prima faza trebuie creat un director unde sunt salvate fisiere. Rulati comanda:

mkdir ~/certificates
cd ~/certificates
1.2 Generati CSR-ul si private key
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes

Se vor solicita informatii referitoare la CSR. Completati cu datele necesare.

Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: FL
Locality Name (eg, city) []: Miami
Organization Name (eg, company) [My Company]: My Company
Organizational Unit Name (eg, section) []:

Common name se refera la numele domeniului sau adresa IP a serverului, trebuie sa specificati si adresa de email :

Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:[email protected]

Mutati certificatul in directorul de configurare Apache

mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.

Pasul 2: Configurarea Firewall-ului

1.1Trebuie sa ne asiguram ca portul 443 TCP este deschis. Acest port este folosit pentru conectarea SSL in locul portului 80.
In acest tutorial folosim UFW.

1.2 Asigurativa ca UFW este activ.

sudo ufw enable

1.3 Permiteti setarile Apache pentru firewall.

sudo ufw allow 'Apache Full'

1.4 Prin comanda "sudo ufw status", puteti verifica regulile curente. Configurarea dvs. ar trebui sa fie de forma:

To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)

1.5 Trebuie permise conectari suplimentare pentru OpenSSH

sudo ufw allow 'OpenSSH'

Pasul 3: Configurare virtual host Apache

3.1 Navigati la setarile implicite Apache ale site-ului

sudo nano /etc/apache2/sites-available/default-ssl.conf

3.2 Acest fisier specifica serverului unde sa gasesasca certificatul SSL. si ar trebui sa fie de forma.

ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars

3.3 Editati urmatoarea linie:
ServerAdmin [email protected]
3.4 Adaugati aceasta linie chiar sub linie ServerAdmin
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
3.5 Acum, editati aceste linii cu locatia certificatului dvs.

SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

3.6 In final fisierul trebuie sa fie de forma :

ServerAdmin [email protected]
ServerName 203.0.113.122
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars

3.7 Salvati si inchideti fisierul.

Pasul 4: Activati modulul Apache SSL

4.1 Activati modulul SSL tastand:
sudo a2enmod ssl
4.2 Acum activati site-ul care a fost editat:
sudo a2ensite default-ssl.conf
4.3 Restartati Apache
sudo service apache2 restart
4.4 Accesati site-ul cu protocolul SSL! Deschideti un browser si accesati:
https://YOUR_SERVER_IP

Browserul dvs. va emite o notificare ca, certificatul este invalid asa cum este normal. Acest lucru se intampla pentru ca certificatul nu este semnat. Urmati pasii necesari pentru a intra pe site.

Pasul 5: Redirectati traficul HTTP pe HTTPS (optional)

5.1 Deschideti fisierul implicit Apache virtual host
nano /etc/apache2/sites-available/000-default.conf
5.2 Adaugati acesata linie in interiorul tag-ului
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
5.3 Reincarcati configurarea Apache
sudo service apache2 reload

Tot traficul spre site va fi redirectat pe protocolul HTTPS.