Mereu am dorit configurarea serverului meu pe HTTPS, dar am evitat din cauza faptului ca certificate SSL gratuite nu se acordau domeniului meu si nu am dorit investirea in unul oficial. Asta a fost pana a aparut Let’s Encrypt ce ofera certificate gratuite in mod automat.

Modalitatea de obtinere a certificatului este usoara. Conform documentatiei am urmat pasii:

Am oprit serverul local nginx pentru ca validarea sa se faca mai simplu. Am clonat repo letsencrypt

git clone https://github.com/letsencrypt/letsencrypt

Am efectuat o rulare de test

cd letsencrypt ./letsencrypt-auto certonly --standalone --test-cert -d cgherman.go.ro

ce mi-a generat dupa o perioada lunga de timp si compilare o structura de foldere in /etc/letsencrypt. Certificatul generat nu era valabil - fiind de test.

Am refacut procesul

./letsencrypt-auto certonly --standalone -d cgherman.go.ro

ce mi-a generat un nou set de certficate impreuna cu lanturile de incredere de aceasta data un certificat valid 90 de zile in folderul /etc/letsencrypt/live/cgherman.go.ro pe care l-am vizualizat cu comanda

openssl x509 -noout -text -in cert.pem

Pentru o mai buna securitate am generat o cheie DHE pe 2048 de biti

openssl dhparam -out etc/nginx/ssl/dhparam.pem 2048

Am modificat fisierul de configurare a serverului nginx pentru domeniul meu. si am redirectionat pe HTTPS:

server { listen 443 ssl; ssl on; root /var/www/cgherman.go.ro; index index.html index.htm; server_name cgherman.go.ro; ssl_certificate /etc/letsencrypt/live/cgherman.go.ro/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cgherman.go.ro/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK'; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security max-age=15768000; ssl_dhparam /etc/nginx/ssl/dhparam.pem; location / { try_files $uri $uri/ /index.html; } } server { listen 80 default_server; server_name cgherman.go.ro; return 301 https://$server_name$request_uri; }

Am repornit serverul si am rulat o testare la SSL Labs si ooaauu ce am primit:

Regenerarea unui nou certificat se face simplu, prin pasul 4 si un restart al serverului.