SSL nu mai este opțional. Browser-ul îți marchează site-ul ca „Not secure" dacă nu ai HTTPS, Google penalizează ranking-ul, iar formularele de contact pe HTTP afișează warning direct în câmpul de input. Pentru un site mic de firmă sau magazin, lipsa SSL costă mai mult în conversii pierdute decât orice certificat plătit.
Vestea bună: certificatele DV (Domain Validation) sunt gratuite via Let's Encrypt din 2016, sunt acceptate de toate browserele moderne și se instalează în 5 minute pe orice hosting decent. Vestea proastă: există încă vendori care vând certificate la 150-500 EUR/an pentru site-uri unde varianta gratuită ar funcționa perfect.
În acest ghid arăt când Let's Encrypt este suficient (răspuns scurt: aproape întotdeauna), când merită un certificat plătit, setup pe cPanel, Plesk, VPS cu certbot și Cloudflare Universal SSL, plus capcanele post-migrare. Dacă ești la început cu infrastructura, citește mai întâi Cloudflare gratuit pentru site mic - setup pas cu pas și DNS pentru începători - tipuri de record.
De ce contează SSL/TLS pentru un site mic
În termeni simpli: SSL/TLS criptează traficul între browser și serverul tău, ca nimeni de pe rețea (operator WiFi public, ISP, atacator MITM) să nu citească sau modifice datele.
- Browser warnings: Chrome și Firefox afișează „Not secure" pentru orice HTTP. Pe formulare cu password sau card, warning direct în input field. Vizitatorul pleacă în 2 secunde.
- SEO ranking signal: Google confirmă din 2014 că HTTPS este factor de ranking. Search Console raportează probleme HTTPS ca issue care afectează indexare.
- GDPR compliance: GDPR cere „măsuri tehnice adecvate" pentru protecția datelor în tranzit. SSL este minimum absolut. Lipsa lui = risc de amendă în caz de incident.
- Payment trust: Orice procesator de plăți (Stripe, PayU, Netopia, EuPlatesc) refuză integrarea fără HTTPS. PCI-DSS o cere explicit.
- Modern features blocked: Service Workers, HTTP/2, HTTP/3, geolocation, camera/microphone API funcționează doar pe HTTPS.
Pe scurt: nu este decizie tehnică, este standard minim de business. Întrebarea nu este „dacă", ci „ce tip".
Tipuri de certificate SSL - DV vs OV vs EV
Există trei niveluri de validare, diferite ca preț și proces. Pentru 95% IMM, DV gratuit este răspunsul.
DV - Domain Validation
CA verifică doar că tu controlezi domeniul, prin DNS record sau fișier HTTP. Issuance automată în secunde-minute. Browser arată padlock-ul standard, fără informații despre companie.
Use case: site prezentare firmă, blog, magazin online standard, SaaS B2C, portfolio, landing page.
Cost: 0 EUR (Let's Encrypt, ZeroSSL, Buypass) până la 30-80 EUR/an (Sectigo PositiveSSL, RapidSSL la reseller). Diferența vizuală între gratuit și plătit DV este zero.
OV - Organization Validation
CA verifică suplimentar că organizația există legal: cere documente, apel telefonic, verificare adresă. Issuance în 1-5 zile. Browser arată padlock plus info companie când utilizatorul dă click pe lock.
Use case: B2B serios, instituții publice, platforme cu volume mari de tranzacții B2B. Cost: 80-250 EUR/an (Sectigo, DigiCert, GlobalSign).
EV - Extended Validation
Validare extinsă cu audit legal complet. Înainte de 2019, browser-ul afișa bara verde cu numele companiei. Din 2019, Chrome și Firefox au eliminat indicatorul vizual - utilizatorul normal nu vede diferența vs DV.
Use case: bănci, instituții financiare reglementate, contracte enterprise care cer EV explicit. Cost: 200-600 EUR/an.
Aici este partea importantă: din 2019 încoace, plata pentru EV are sens doar dacă există cerință contractuală sau de compliance care îl menționează explicit. Pentru site obișnuit, EV este o relicvă tehnologică, nu un signal de încredere care funcționează.
Tabel comparativ DV vs OV vs EV
| Caracteristică | DV gratuit | DV plătit | OV | EV |
|---|---|---|---|---|
| Validare | Automată, DNS/HTTP | Automată, DNS/HTTP | Manuală, documente firmă | Extinsă, audit legal |
| Timp issuance | 30 sec - 5 min | 30 sec - 1 oră | 1-5 zile | 5-15 zile |
| Indicator browser | Padlock standard | Padlock standard | Padlock + info firmă în detalii | Padlock standard (era bara verde, eliminată 2019) |
| Cost anual | 0 EUR | 30-80 EUR | 80-250 EUR | 200-600 EUR |
| Wildcard inclus | Da (Let's Encrypt) | De obicei extra | Extra 150-400 EUR | Nu există EV wildcard |
| Use case | Site mic-mediu, blog, eCommerce | Cumpărător corporate care cere factură SLA | B2B, instituții | Reglementări specifice bancă/finanțe |
| Reînnoire | 90 zile automat | 1-2 ani manual | 1-2 ani manual | 1 an manual cu reverificare |
Trade-off: certificate plătite vin cu „warranty" de la CA (10.000-1.500.000 USD) și suport telefonic. În practică, nicio firmă mică nu a recuperat vreodată bani din warranty SSL - este marketing.
Free vs paid - cum decizi
Reguli simple pentru IMM din România:
- Site simplu de firmă, blog, portfolio, landing page → Let's Encrypt DV gratuit, instalat automat din panel hosting. Final.
- Magazin online standard (WooCommerce, PrestaShop, Shopify pe domeniu custom) → Let's Encrypt DV gratuit. Procesatorii de plăți nu cer mai mult.
- Aplicație SaaS B2C → Let's Encrypt DV + wildcard pentru subdomenii client. Gratuit.
- B2B unde clientul corporate cere explicit „certificat profesional cu factură" → DV plătit Sectigo sau RapidSSL la 30-80 EUR/an.
- Bancă, instituție financiară reglementată, eHealth → OV sau EV conform reglementatorului. Aici nu mai e alegerea ta tehnică, ci compliance.
Battle-tested: Let's Encrypt servește peste 400 milioane de domenii, inclusiv Fortune 500. Argumentul „gratuit înseamnă neserios" este invers - infrastructura este mai bine auditată decât multe CA-uri plătite mici.
Setup path A - cPanel AutoSSL
Cea mai simplă cale pe shared hosting RO. Hostico, Hosterion, cyberfolks, Romarg, THC, SiteBunker au AutoSSL activat by default sau cu un toggle.
Setup minim:
- Login cPanel → secțiunea Security → SSL/TLS Status.
- Bifezi domeniul principal + toate subdomeniile relevante (www, mail, blog).
- Apeși Run AutoSSL. cPanel cere automat certificate Let's Encrypt sau Sectigo (depinde de provider), le instalează și le reînnoiește la 90 zile.
- Verifici în browser:
https://domeniu.ro→ padlock verde → done.
Dacă AutoSSL nu apare în panel, deschizi ticket la provider. Toate hosting-urile decente RO îl au gratuit pe orice plan.
Pro tip dev: AutoSSL renewal rulează automat noaptea. Dacă vezi certificat expirat după 90 zile, înseamnă că AutoSSL a eșuat (de obicei DNS greșit pentru un subdomeniu). Deschide log-ul AutoSSL din cPanel ca să vezi exact ce domeniu blochează renewal.
Setup path B - Plesk SSL It
Plesk are extensie nativă SSL It! care face același lucru ca AutoSSL pe cPanel.
Pași:
- Plesk → Domains → click pe domeniu → SSL/TLS Certificates.
- Click Install sub Let's Encrypt.
- Bifezi „Include
www.subdomain" și „Secure webmail". - Click Get it free. Plesk emite certificatul și îl asignează automat la website și mail.
- Activează Keep the website secure pentru redirect HTTPS automat în panel.
Plesk renewal merge automat din coada lui internă, fără cron extern.
Setup path C - certbot pe VPS
Pentru VPS self-managed (Hetzner, OVH, Contabo, DigitalOcean), certbot este standardul. Funcționează cu Nginx, Apache, standalone.
Install certbot pe Ubuntu/Debian
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
Pentru Apache, înlocuiește python3-certbot-nginx cu python3-certbot-apache.
Issue cu validare HTTP-01 (cel mai comun)
sudo certbot --nginx -d domeniu.ro -d www.domeniu.ro
Certbot detectează virtual host-ul Nginx, generează cert-ul, modifică config-ul să asculte pe 443 cu noul certificat și restart server. Te întreabă o singură dată email pentru notificări de expirare.
Wildcard cu validare DNS-01
Pentru *.domeniu.ro, HTTP-01 nu merge - trebuie token TXT în DNS.
sudo certbot certonly --manual --preferred-challenges dns \
-d "*.domeniu.ro" -d domeniu.ro
Certbot afișează un token de tipul _acme-challenge.domeniu.ro TXT "xyz123". Adaugi record în DNS, aștepți propagare 2-5 minute (dig TXT _acme-challenge.domeniu.ro verifică), continui în certbot.
Dependency: pentru wildcard automat la renewal, instalezi plugin pentru DNS provider:
sudo apt install python3-certbot-dns-cloudflare
Apoi pui credențialele API în /etc/letsencrypt/cloudflare.ini și certbot face renewal complet automat.
Reînnoire automată
Certbot install setează by default un systemd timer (certbot.timer) sau cron entry care verifică renewal de 2 ori pe zi. Reînnoirea se face efectiv doar dacă certificatul are <30 zile până la expirare.
Verifică:
sudo systemctl list-timers | grep certbot
sudo certbot renew --dry-run
Dry-run testează tot procesul fără să emită cert nou - obligatoriu să rulezi după install, ca să prinzi probleme de config înainte să expire production.
Pro tip dev: adaugă hook post-renewal pentru reload serviciu:
sudo certbot renew --deploy-hook "systemctl reload nginx"
Fără hook, certificatul nou stă pe disk dar Nginx servește vechiul până la următorul reload manual.
Setup path D - Cloudflare Universal SSL
Cloudflare oferă SSL gratuit „la edge" - certificat pe proxy-ul Cloudflare, fără să atingi serverul tău. Setup în 15 minute, cu o capcană majoră.
Cele trei moduri SSL:
- Flexible: vizitator → HTTPS → Cloudflare → HTTP → origin. Cloudflare criptează partea publică, dar traficul Cloudflare-origin merge plain HTTP.
- Full: HTTPS pe ambele segmente, dar Cloudflare nu validează certificatul origin (poate fi self-signed).
- Full (strict): ca Full, dar Cloudflare validează că certificatul origin este real (Let's Encrypt sau CA recunoscut).
⚠️ MITM risk pe Flexible mode. Flexible este OK pentru blog static fără login. Pentru site cu login, plăți, cookies de sesiune sau admin panel, este vulnerabilitate. Atacator cu acces la rețeaua Cloudflare-origin (ISP, datacenter, BGP hijacking) poate citi și modifica trafic plain HTTP. În plus, dacă plugin-ul detectează HTTP în loc de HTTPS, intri în redirect loop infinit (
ERR_TOO_MANY_REDIRECTS). Folosește Flexible doar temporar cât configurezi cert real pe origin.
Recomandare: Full (strict) cu Let's Encrypt pe origin + Cloudflare Universal SSL la edge. Dublă criptare, fără MITM risk, plus TLS 1.3 + HTTP/3 gratuit.
Setup minim Full strict:
- Instalezi Let's Encrypt pe origin (path A, B sau C de mai sus).
- Cloudflare Dashboard → SSL/TLS → Overview → setează Full (strict).
- SSL/TLS → Edge Certificates → Always Use HTTPS → ON.
- SSL/TLS → Edge Certificates → Minimum TLS Version → 1.2 (sau 1.3 dacă nu ai vizitatori pe browsere vechi).
- Verifici cu
curl -I https://domeniu.ro→ vezicf-cache-statusși certificat valid.
Redirect HTTP la HTTPS
După instalare SSL, vechile URL-uri HTTP trebuie redirectate. Setup minim cu .htaccess (Apache, LiteSpeed):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Pentru Nginx, în config server block:
server {
listen 80;
server_name domeniu.ro www.domeniu.ro;
return 301 https://$host$request_uri;
}
Cu Cloudflare, redirect-ul îl face Cloudflare prin Always Use HTTPS - nu mai e nevoie să atingi .htaccess sau Nginx pe origin pentru asta.
HSTS - când să îl activezi și când să eviți
HSTS (HTTP Strict Transport Security) este un header care spune browser-ului „acest domeniu este HTTPS-only pentru următoarele N secunde, nu accepta HTTP chiar dacă utilizatorul scrie http:// explicit".
Header de bază:
Strict-Transport-Security: max-age=31536000; includeSubDomains
💡 Cu HSTS preload, drumul de întoarcere nu există. Dacă incluzi domeniul în HSTS Preload List (hstspreload.org), Chrome și Firefox hardcoded refuză orice HTTP timp de luni-ani, chiar dacă tu dai jos HSTS de pe server. Nu activa preload până nu rulezi HSTS standard 3-6 luni fără probleme. Pentru site mic experimental sau staging, lasă HSTS dezactivat - îți păstrezi opțiunea de a face fallback la HTTP dacă ceva se rupe major.
Recomandare practică pentru IMM: activează HSTS standard cu max-age=31536000 (1 an) după ce confirmi că HTTPS funcționează stabil 30 zile. Lasă preload pentru proiecte mature, cu echipă tehnică care înțelege consecințele.
Probleme comune după migrarea la HTTPS
Mixed content
Cea mai frecventă problemă. Pagina se încarcă pe HTTPS, dar conține referințe hardcoded la http:// (imagini, scripts, iframes). Browser blochează resursele sau marchează padlock-ul ca „Not fully secure".
Detectare: DevTools → Console → reload pagina. Erorile mixed content sunt marcate explicit cu URL.
Fix WordPress: plugin Better Search Replace care înlocuiește http://domeniu.ro cu https://domeniu.ro în toată baza de date. Backup înainte. Rulezi o singură dată după migrare.
Redirect loop cu Cloudflare Flexible
Simptom: ERR_TOO_MANY_REDIRECTS. Cauza: Cloudflare pe Flexible trimite HTTP la origin, dar .htaccess redirect HTTP la HTTPS. Loop infinit.
Fix: ori treci Cloudflare la Full strict, ori elimini redirect-ul de pe origin și folosești doar Always Use HTTPS din Cloudflare.
Sesiuni de login pierdute
Cookies setate pe HTTP nu sunt valide pe HTTPS cu flag Secure. Utilizatorii logați înainte de migrare sunt deconectați. Pe WordPress, plugin Really Simple SSL gestionează automat tranziția cookies.
Provideri RO populari și opțiunile lor SSL
Pe scurt, pentru shared hosting românesc, situația arată așa:
- Hostico, Hosterion, cyberfolks, Romarg, THC, SiteBunker - Let's Encrypt gratuit cu AutoSSL, plus opțional Sectigo OV/EV la 80-300 RON/an dacă vrei factură separată cu CA brand.
- SiteGround - Let's Encrypt + opțional Wildcard plătit la 60 EUR/an.
- Cloudways, Hetzner, OVH - Let's Encrypt prin panel propriu sau certbot manual pe VPS, fără cost.
Vezi cum aleg hosting pentru site mic.
Întrebări frecvente
Ce este Let's Encrypt și de ce este gratuit?
Let's Encrypt este un CA non-profit fondat de Mozilla, Google, Facebook, Cisco și Electronic Frontier Foundation în 2014. Misiunea explicită: HTTPS gratuit pentru întregul web. Finanțare prin sponsorizări corporate, nu prin vânzare certificate. Certificatele sunt acceptate de toate browserele (root CA în Mozilla, Microsoft, Apple, Google stores). Validitate 90 zile cu renewal automat.
Pot folosi un singur certificat pentru mai multe domenii?
Da, prin Subject Alternative Names (SAN). Let's Encrypt suportă până la 100 SAN per certificat. Util pentru domeniu.ro + www.domeniu.ro + blog.domeniu.ro într-un singur cert. Pentru sub-domenii nelimitate, alegi wildcard (*.domeniu.ro).
Mi-a expirat certificatul, ce fac?
Verifici cron-ul/timer-ul de renewal cu sudo certbot renew --dry-run (pe VPS) sau loguri AutoSSL (pe cPanel). 90% din cazuri, renewal-ul a eșuat din motive DNS sau firewall. Rulezi renewal manual, fixezi cauza, setezi monitorizare externă (UptimeRobot Pro alertează la expirare).
Trebuie certificat SSL pentru mail.domeniu.ro?
Da, dacă folosești webmail accesat prin browser sau client desktop cu STARTTLS. cPanel AutoSSL îl include by default dacă bifezi subdomeniul.
Cât costă să migrez de la SSL plătit la Let's Encrypt?
Zero, doar timpul tău. Instalezi Let's Encrypt în paralel, schimbi certificatul activ în config server, verifici că totul merge. Sub 30 minute pentru un site simplu.
Concluzie
Pe scurt: pentru 95% din site-urile mici și mijlocii, Let's Encrypt DV gratuit este alegerea corectă. Browser-ul afișează același padlock ca la certificat plătit, procesatorii îl acceptă, Google îl rankuiește identic. Plătești pentru OV/EV doar dacă ai cerință explicită de compliance sau client corporate care impune contractual.
Setup minim: shared cu cPanel AutoSSL activat sau VPS cu certbot și renewal automat prin systemd timer. Pentru performanță și protecție DDoS, adaugi Cloudflare Universal SSL la edge în Full strict - nu Flexible.
Pro tip dev: monitorizează expirarea extern (UptimeRobot Pro, BetterStack) - nu te baza pe email-uri de la CA care ajung în spam. Un certificat expirat la 4 dimineața te costă mai mult în comenzi pierdute decât 5 ani de monitoring plătit.
Surse
- https://letsencrypt.org/docs/
- https://certbot.eff.org/instructions
- https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/
- https://hstspreload.org
- https://docs.cpanel.net/cpanel/security/ssl-tls-status/
- https://www.plesk.com/extensions/letsencrypt/