WordPress HTTPS, SSL și TLS – un ghid pentru administratorii site-urilor web

Publicat: 2021-02-01

Când vizitați un site web, browserul dvs. (cunoscut și ca client ) trimite o solicitare HTTP către un server web. Odată ce serverul web trimite un răspuns HTTP , browserul poate reda pagina pe ecran. Cu toate acestea, traficul HTTP are o problemă; este un protocol text simplu. Acest lucru îl face susceptibil la snooping și amestec.

Dacă un atacator se află în aceeași rețea cu tine, acesta poate intercepta și citi traficul HTTP. De asemenea, aceștia pot modifica atât solicitările dumneavoastră către server, cât și răspunsurile serverului către dumneavoastră. Acesta este cunoscut ca un atac Man-in-the-Middle (MitM). Acest lucru se poate întâmpla cu ușurință pe rețelele WiFi publice, cum ar fi cele din holul hotelului și spațiile publice.

De aceea, un site web ar trebui să fie pe HTTPS – astfel încât traficul nu poate fi interceptat. Acest articol explică ce sunt HTTPS, SSL și TLS. De asemenea, explică cum vă puteți configura site-ul dvs. WordPress pentru a funcționa pe HTTPS.

Cuprins

  • Ce este SSL și TLS?
  • Ce este HTTPS?
    • Cum funcționează HTTPS?
      • Strângerea de mână TLS
      • Cheile publice și private (perechea de chei)
  • Chiar am nevoie de HTTPS pe site-ul meu WordPress?
    • Obținerea unui certificat HTTPS TLS (alias certificat SSL)
    • HTTPS pe găzduire WordPress partajată și gestionată
  • Configurarea WordPress HTTPS
    • Configurarea serverului web
    • Configurarea URL-ului WordPress la HTTPS
    • Aplicarea TLS pe ​​tabloul de bord WordPress (sfaturi bonus)
  • Adăugarea HTTP Strict Transport Security (HSTS)
    • Configurarea HSTS pe serverul web
    • Cifrele TLS
    • WordPress-ul meu rulează pe HTTPS, este sigur?

Ce este SSL și TLS?

Odată ce internetul a început să crească, a devenit evident că avem nevoie de un mecanism pentru a transfera informații în siguranță între un client și un server, fără ca nimeni să poată asculta sau modifica traficul - introduceți SSL sau Secure Socket Layer. SSL este un protocol de securitate pentru Internet, dezvoltat pentru prima dată de Netscape în 1995 pentru a rezolva această problemă.

Mai precis, SSL și-a propus să realizeze următoarele:

  • Criptare — pentru a cripta traficul astfel încât să nu poată fi interceptat de o terță parte neautorizată prin interceptare,
  • Autentificare - pentru a vă asigura că serverul cu care vorbește clientul este într-adevăr serverul pe care spun că este,
  • Integritate — pentru a se asigura că datele trimise între client și server nu sunt modificate de altcineva pe parcurs.

Cu toate acestea, de-a lungul timpului, cercetătorii de securitate au identificat o serie de probleme de securitate în SSL. Prin urmare, SSL a fost înlocuit de TLS (Transport Layer Security protocol). În timp ce diferențele sub capotă dintre SSL și TLS sunt drastice, scopul TLS rămâne în mare parte același.

NOTĂ: este posibil să vedeți frecvent SSL utilizat pentru a face referire la TLS. SSL este un protocol vechi și nu mai este sigur de utilizat. Cu toate acestea, datorită popularității sale, mulți încă folosesc SSL ca acronim, dar înseamnă TLS .

Ce este HTTPS?

HTTPS sau Hypertext Transfer Protocol Secure este o versiune securizată a protocolului HTTP. HTTPS se bazează pe Transport Layer Security (TLS), un protocol îmbunătățit și mai sigur decât cel utilizat anterior, Secure Socket Layer (SSL). TLS oferă criptare, autentificare și integritate solicitărilor și răspunsurilor HTTPS.

Vă puteți gândi la HTTPS ca la solicitări și răspunsuri HTTP (aceasta este versiunea în text simplu a protocolului) care trec printr-un tunel TLS . Termenul tehnic pentru aceasta este încapsulare . Este pertinent să rețineți că TLS poate fi utilizat pentru a încapsula alte protocoale, nu doar HTTP.

Puteți identifica site-urile web care utilizează HTTPS fie privind la începutul adresei URL (începe cu HTTPS) în bara de navigare a browserului, fie prin lacătul verde. Dacă navigați pe un site web pe HTTP, browserele îl marchează ca Nesecurizat .

Site-uri web HTTP marcate ca nesecurizate

Cum funcționează HTTPS?

Când solicitați o pagină web folosind HTTPS, browserul și serverul web pornesc un proces numit TLS handshake . Strângerea de mână TLS este o modalitate prin care clientul și serverul pot decide dacă și cum ar trebui să comunice. În timpul strângerii de mână TLS, clientul și serverul fac următoarele:

  • decideți asupra versiunii protocolului TLS de utilizat (TLS 1.0, 1.2, 1.3...),
  • să convină asupra suitelor de criptare (un set de algoritmi de criptare utilizate pentru a stabili comunicații securizate) să folosească,
  • autentifică identitatea serverului,
  • generați chei de criptare pentru a le utiliza după încheierea strângerii de mână, pentru a comunica în siguranță.

Strângerea de mână TLS

În timpul strângerii de mână TLS, serverul trimite clientului certificatul pentru ca acesta să verifice dacă poate autentifica serverul. Un certificat este similar cu un pașaport - este eliberat de o autoritate centrală de încredere numită Autoritate de certificare (CA), care stabilește în mod independent identitatea site-ului web, aceasta poate fi dovedită browserului dumneavoastră.

Cheile publice și private (perechea de chei)

Certificatul TLS (denumit adesea certificat SSL) pe care serverul web îl trimite clientului conține cheia publică . Cheia publică este una dintre cele două chei speciale numite pereche de taste. O pereche de taste este formată din două chei; cheia publică și cheia privată . În timp ce cheia publică este partajată cu clienții, cheia privată este păstrată secretă pe server și nu este niciodată dezvăluită. Perechea de chei sunt forjate împreună.

Perechea de chei publice și private au o relație deosebit de interesantă - fără a cunoaște cheia privată a serverului (aceasta este secretă și numai serverul ar trebui să o știe), un client poate cripta datele folosind cheia publică a serverului pe care serverul o poate decripta folosind cheia sa privată . .

Dacă acest lucru sună confuz, gândiți-vă la asta ca și cum „serverul” i-ar fi trimis „browserului” o valiză deschisă (cheie publică) protejată cu un lacăt - odată ce puneți ceva în valiză și încuiați lacătul, doar „serverul” cu cheia de la lacăt (cheie privată) poate vedea ce este înăuntru.

Chiar am nevoie de HTTPS pe site-ul meu WordPress?

Da. Indiferent de tipul de trafic pe care îl deservește site-ul dvs. (fie că este vorba de informații de identificare personală (PII), date despre titularul cardului sau imagini cu pisici), nu există absolut niciun motiv pentru care să nu vă difuzați site-ul prin HTTPS.

În primul rând, atunci când rulați site-ul dvs. pe HTTP, hackerii vă pot fura cu ușurință parolele și acreditările WordPress și vă pot sparge site-ul. Ei pot face toate acestea folosind instrumente disponibile gratuit.

Pe lângă beneficiile de securitate și o experiență mai bună a utilizatorului, noul protocol HTTP/2, care oferă mai multe beneficii de performanță, nu poate fi utilizat fără TLS în browserele web. În plus, HTTPS are, de asemenea, beneficii de optimizare pentru motoarele de căutare (SEO) și face parte din algoritmul de clasare al căutărilor Google.

Obținerea unui certificat HTTPS TLS (alias certificat SSL)

Pentru a configura HTTPS, veți avea nevoie de un certificat TLS dacă setați totul singur. Deși veți vedea zeci de oferte de certificate TLS plătite, puteți obține un certificat TLS gratuit de la o autoritate de certificare non-profit numită Let's Encrypt. Nu există absolut nimic diferit între un certificat pe care îl obțineți gratuit de la Let's Encrypt și unul pentru care plătiți.

HTTPS pe găzduire WordPress partajată și gestionată

Vă rugăm să rețineți că pentru soluțiile de găzduire gestionată sau partajată, furnizorul dvs. de găzduire poate sau nu percepe pentru adăugarea HTTPS - dacă acesta este cazul, înainte de a plăti bani pentru un certificat, întrebați serviciul de asistență pentru clienți dacă puteți utiliza un certificat Let's Encrypt cu serviciul în schimb. Forumurile comunității Let's Encrypt sunt, de asemenea, o resursă excelentă care vă poate ajuta.

Configurarea HTTPS WordPress (aplicarea TLS pe ​​site-ul dvs. WordPress)

Există câteva moduri de a aplica TLS pe ​​site-ul dvs. WordPress, în funcție de configurația dvs. În cele mai multe cazuri, fie vă veți configura serverul web pentru a redirecționa tot traficul HTTP către HTTPS (consultați generatorul de configurare SSL al Mozilla.

De asemenea, trebuie să configurați WordPress pentru a asculta pe HTTPS. Puteți face acest lucru cu pluginuri precum Really Simple SSL sau WP force SSL. În acest exemplu, vom vedea cum să facem acest lucru fără a utiliza pluginuri suplimentare.

Configurarea serverului web

Atenție

  • Fiți atenți când copiați/lipiți configurațiile serverului web și asigurați-vă că știți exact ce fac acestea consultând documentația serverului dvs. web
  • Puteți găsi multe exemple online folosind fie %{HTTP_HOST} (Server HTTP Apache), fie $http_host (Nginx) - ambele ar putea face site-ul dvs. susceptibil la atacuri de antet de gazdă HTTP - în schimb, introduceți numele de gazdă în configurația dvs., așa cum se vede de mai jos.

Dacă utilizați Nginx, puteți configura următoarele:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

Alternativ, dacă utilizați Apache HTTP Server, puteți configura următoarele:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Configurarea URL-ului WordPress la HTTPS

După ce activați HTTPS pe serverul dvs. web, va trebui, de asemenea, să configurați WordPress. În teorie, puteți face acest lucru manual: pur și simplu schimbați adresa WordPress și adresa site-ului în setările generale WordPress. De asemenea, trebuie să faceți o căutare și să înlocuiți în baza de date pentru a schimba toate linkurile site-ului dvs. de la HTTP la HTTPS.

[Captură de ecran]

Deci, cel mai probabil, este mult mai ușor să utilizați un plugin pentru a vă comuta site-ul WordPress la HTTPS. Puteți folosi un plugin popular, cum ar fi Really Simple SSL, pentru a vă ajuta pe parcursul procesului.

Implementarea TLS pe ​​tabloul de bord WordPress

TLS este util doar dacă este utilizat. Ca atare, doriți să vă asigurați că site-ul dvs. WordPress nu numai că acceptă TLS, ci îl și impune. Deoarece tabloul de bord WordPress trebuie întotdeauna accesat prin HTTPS, WordPress include opțiunea specială de configurare FORCE_SSL_ADMIN, care poate fi setată la true în wp-config.php.

define('FORCE_SSL_ADMIN', true);

Atenție

  • În funcție de configurarea și configurația site-ului dvs. web (în special, dacă utilizați un proxy invers), acest lucru poate face ca solicitările către tabloul de bord WordPress să intre într-o buclă de redirecționare infinită. Pentru informații suplimentare despre cum să remediați acest lucru, consultați documentația WordPress și testați întotdeauna modificările într-un mediu de pregătire înainte de a le lansa în producție.
  • În plus, asigurați-vă că aveți deja TLS configurat și funcționează corect înainte de a seta FORCE_SSL_ADMIN la true.

SFAT BONUS 1: Adăugarea HTTP Strict Transport Security (HSTS)

Deși redirecționarea întregului trafic către HTTPS este o mișcare grozavă, din păcate, atacatorii pot avea în continuare câteva trucuri în mânecă. Un atac cunoscut sub numele de bandă SSL ar permite unui atacator să păcălească browserul pentru a naviga pe site în HTTP în loc de HTTPS securizat, învingând efectiv munca ta grea.

Pentru mai multe detalii (foarte tehnice) despre atacurile SSL strip, urmăriți mai jos discursul lui Moxie Marlinspike.

Drept urmare, browserele implementează acum HTTP Strict Transport Security sau HSTS. HSTS nu este altceva decât un simplu antet HTTP care spune browserului că acest site web nu ar trebui să fie accesat niciodată prin HTTP, învingând orice atac SSL strip.

Configurarea HSTS pe serverul web

Atenție

  • Nu activați HSTS până când nu aveți încredere în HTTPS - orice vizitator care primește acest antet HTTP va putea vedea site-ul dvs. numai prin HTTPS
  • Setați întotdeauna atributul de vârstă maximă - opțional, puteți opta pentru a seta o valoare scăzută prima dată când implementați HSTS (pentru a limita orice probleme potențiale) și să o creșteți atunci când sunteți mai încrezător folosind HSTS

Dacă utilizați Nginx, puteți configura următoarele în blocul de server care ascultă pe portul 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

Alternativ, dacă utilizați Apache HTTP Server, puteți configura următoarele în cadrul VirtualHost care ascultă pe portul 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Sfat bonus 2: Configurarea cifrurilor TLS

Pentru a se asigura că transferul de date între browser și server este securizat, ambele părți sunt de acord să utilizeze ceea ce este cunoscut sub numele de suită de criptare - o combinație de algoritmi de autentificare, criptare și cod de autentificare a mesajelor (MAC) - pentru a negocia setările de securitate , precum și pentru a transfera datele în siguranță.

Din păcate, multe cifruri vechi au vulnerabilități de securitate și nu mai sunt deosebit de sigure de utilizat. În timp ce decideți ce cifruri să utilizați este o afacere dificilă, generatorul de configurare SSL Mozilla face ca alegerea unei suită de cifruri TLS care se potrivește nevoilor dvs. este o simplă simplitate. Acolo unde este posibil, încercați să utilizați profilurile moderne sau intermediare, însă, în funcție de cazul dvs. de utilizare, mai ales dacă aveți nevoie să acceptați browsere vechi sau să îndepliniți cerințele de reglementare și de conformitate, poate fi necesar să utilizați configurații de suită de criptare ușor diferite.

Dacă utilizați Nginx, puteți configura următoarele cifruri TLS (pe baza profilului intermediar Mozilla SSL Configuration Generator):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Alternativ, dacă utilizați Apache HTTP Server, configurați următoarele cifruri TLS (pe baza profilului intermediar Mozilla SSL Configuration Generator):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

De asemenea, puteți testa scorul de configurare TLS al site-ului dvs. folosind un instrument gratuit numit SSLabs, pentru a obține și mai multe informații tehnice.

WordPress-ul meu rulează pe HTTPS, este sigur?

Pictogramele verzi cu lacăt și cuvintele „securizat” de lângă bara de adrese a browserului dvs. v-au făcut să credeți că HTTPS este o baghetă magică care rezolvă toate problemele legate de securitatea site-ului. Din păcate, nu. Lacătul verde din bara browserului

HTTPS este doar o mică parte a securității WordPress: le permite vizitatorilor să navigheze pe site-ul dvs. printr-o conexiune securizată . Cu toate acestea, nu vă protejează site-ul web ca un firewall WordPress și nu îl face mai sigur. Nici asta nu înseamnă că este mai sigur decât un site care rulează pe HTTP. Ca orice altă apărare de securitate, HTTPS ajută la rezolvarea unei părți a problemei.

Cu alte cuvinte, deși cu siguranță ar trebui să implementați și să impuneți HTTPS, aceasta nu înseamnă că puteți sta liniștit și nu vă mai faceți griji pentru securitate. Ar trebui în continuare:

  • Adăugați autentificare cu doi factori
  • Instalați un plugin de monitorizare a integrității fișierelor
  • Aplicați politici puternice pentru parole WordPress
  • Păstrați un jurnal de activitate WordPress ca o înregistrare a tuturor modificărilor care au loc pe site-ul dvs
  • Utilizați un firewall bun.