Dokumentacija
Izklopite TLS 1.0 in 1.1
Izklopite TLS 1.0 in 1.1
TLS je šifriranje pod vsako povezavo https://. Različici 1.0 (1999) in 1.1 (2006) imata znane slabosti in sta bili leta 2021 uradno upokojeni (RFC 8996). Vsi sodobni brskalniki ju ne uporabljajo več, PCI DSS, standard za kartična plačila, pa ju že leta ne dovoljuje. Strežnik, ki ju še sprejema, s tem ne pridobi nobenega obiskovalca; samo pade na varnostnih pregledih, revizijah plačilnih ponudnikov in strank, in pusti odprta šibkejša vrata.
Izklop je sprememba nastavitev strežnika, ne spletne strani. Kontrolni seznam strani se poskusi povezati s TLS 1.0 in 1.1 in opozori, če strežnik privoli.
Kaj pričakuje kontrolni seznam
| Kaj naredi strežnik | Rezultat |
|---|---|
| sprejme TLS 1.2 in 1.3, zavrne 1.0 in 1.1 | OK |
| še vedno sprejme TLS 1.0 ali 1.1 | opozorilo |
| ne ponuja ničesar novejšega od TLS 1.1 | napaka: sodobni brskalniki strani sploh ne odprejo |
Kdo izgubi dostop, ko ju izklopite: Internet Explorer na Windows 7 in starejših brez posodobitev, Android 4.3 in starejši ter zelo stari skripti ali naprave, ki kličejo vašo stran. V praksi nihče, ki danes obišče spletno stran v brskalniku.
Preverite sami
Namesto example.com vpišite svojo stran:
openssl s_client -connect example.com:443 -servername example.com -tls1 -cipher 'DEFAULT@SECLEVEL=0' </dev/null 2>&1 | grep -E 'Protocol|alert|Cipher is'
openssl s_client -connect example.com:443 -servername example.com -tls1_1 -cipher 'DEFAULT@SECLEVEL=0' </dev/null 2>&1 | grep -E 'Protocol|alert|Cipher is'
openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null 2>&1 | grep -E 'Protocol|Cipher is'
Popravljeno: prva dva se končata z napako, kot je alert protocol version ali Cipher is (NONE), tretji pa pokaže Protocol: TLSv1.2 (ali TLSv1.2 ob Cipher is). Če prvi ali drugi pokaže Protocol: TLSv1 ali TLSv1.1 s šifro, je stara različica še vklopljena.
-cipher 'DEFAULT@SECLEVEL=0' je pomemben: OpenSSL 3 stare različice zavrne že na svoji strani, kar bi bilo videti kot uspeh. Če vaš openssl odgovori no protocols available ali unknown option, starih različic sploh ne more preveriti; namesto tega uporabite nmap --script ssl-enum-ciphers -p 443 example.com, ki izpiše vse različice, ki jih strežnik sprejme.
Kako popraviti
To je nastavitev strežnika: WordPress ali kateri koli drug CMS je ne more spremeniti. Pri deljenem gostovanju gostitelja prosite, naj sprejema samo TLS 1.2 in 1.3; večina to že dela, ostali pa nastavitev spremenijo za ves strežnik. Sicer izberite tisto, do česar imate dostop.
cPanel
Pri deljenem gostovanju s cPanelom je to stvar gostitelja: podporo prosite, naj spletni strežnik omeji na TLS 1.2 in 1.3.
Z WHM (lasten strežnik ali VPS):
- Odprite Service Configuration → Apache Configuration → Global Configuration.
- V SSL/TLS Protocols vpišite
-all +TLSv1.2 +TLSv1.3(polje uporablja Apachejevo sintaksoSSLProtocol). Ne sme vsebovatiTLSv1aliTLSv1.1. - Save in Rebuild Configuration and Restart Apache.
Če strežnik namesto Apacheja poganja LiteSpeed Web Server, preverite tudi njegove nastavitve SSL in ga znova zaženite.
Plesk
Na Linuxu, kot skrbnik:
- Odprite Tools & Settings → SSL/TLS Ciphers (v nekaterih različicah pod Security).
- Označena pustite samo TLSv1.2 in TLSv1.3 in uveljavite.
Enako v ukazni vrstici:
plesk bin server_pref -u -ssl-protocols 'TLSv1.2 TLSv1.3'
V Plesku za Windows se protokoli nastavijo v samem Windowsu: glejte zavihek IIS.
DirectAdmin
Kot root nastavite profil TLS v CustomBuildu na Mozillin intermediate (TLS 1.2 in 1.3) in na novo zapišite konfiguracijo spletnega strežnika:
cd /usr/local/directadmin/custombuild
./build set ssl_configuration intermediate
./build rewrite_confs
nginx
Protokole nastavite v bloku http { … } datoteke /etc/nginx/nginx.conf (ista pot na Debianu, Ubuntuju, Rocky, Alma in CentOS):
http {
ssl_protocols TLSv1.2 TLSv1.3;
}
Nato poiščite druge vrstice, ki to nastavitev povozijo:
grep -rn ssl_protocols /etc/nginx/ /etc/letsencrypt/options-ssl-nginx.conf 2>/dev/null
Vse vrstice ssl_protocols morajo navajati isto. nginx izbere protokol, še preden ve, katera stran je zahtevana, zato privzeti strežnik na vratih 443 odloča za vse strani na tem naslovu IP: ena stara vrstica tam pusti TLS 1.0 vklopljen za vse.
sudo nginx -t && sudo systemctl reload nginx
Apache in LiteSpeed
Z dostopom do strežnika (Apache). Na Debianu in Ubuntuju uredite /etc/apache2/mods-available/ssl.conf, na Rocky, Alma in CentOS pa /etc/httpd/conf.d/ssl.conf:
SSLProtocol -all +TLSv1.2 +TLSv1.3
Preverite, da je noben navidezni gostitelj ali vključena datoteka ne nastavi drugače (Certbotova /etc/letsencrypt/options-ssl-apache.conf jo nastavi):
grep -rn SSLProtocol /etc/apache2/ /etc/httpd/ /etc/letsencrypt/ 2>/dev/null
sudo apachectl configtest && sudo systemctl reload apache2
(Na Rocky, Alma in CentOS httpd namesto apache2.) Na teh sistemih od različice 8 naprej sistemska kriptografska politika TLS 1.0 in 1.1 že izključuje; če ju strežnik še sprejema, jo povozi izrecna vrstica SSLProtocol.
Brez dostopa do strežnika (deljeno gostovanje, LiteSpeed). TLS se v .htaccess ne da nastaviti. Vprašajte gostitelja.
Cloudflare
Ko stran teče skozi Cloudflare (oranžen oblak), se obiskovalci in kontrolni seznam povežejo s Cloudflarom, ne z vašim strežnikom.
- Odprite domeno in pojdite na SSL/TLS → Edge Certificates.
- Minimum TLS Version nastavite na TLS 1.2.
Vaš strežnik lahko stare različice še vedno sprejema za povezave mimo Cloudflara; popravite jih tudi tam, z zavihkom za vaš strežnik.
IIS in ASP.NET
Windows različice TLS nastavlja za ves strežnik (SCHANNEL), ne za posamezno stran. Najlažje je z brezplačnim orodjem IIS Crypto podjetja Nartac: uporabite predlogo Best Practices, preverite, da TLS 1.0 in 1.1 pod Server Protocols nista označena, in znova zaženite strežnik.
Ali pa ključe v registru nastavite sami v PowerShellu s skrbniškimi pravicami in nato znova zaženite strežnik:
foreach ($version in 'TLS 1.0', 'TLS 1.1') {
$key = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version\Server"
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name Enabled -Value 0 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $key -Name DisabledByDefault -Value 1 -PropertyType DWord -Force | Out-Null
}
Opozorilo: Ti ključi vplivajo samo na povezave do tega strežnika. Pred ponovnim zagonom preverite, da nič drugega na njem (star SQL Server, Remote Desktop na nezakrpanem sistemu, stara aplikacija .NET) za dohodne povezave ni odvisno od TLS 1.0.
Gostovane platforme
Shopify, Wix, Squarespace in Webflow strežnike upravljajo sami in TLS 1.0 in 1.1 že zavračajo. Če kontrolni seznam tam pravi drugače, domena najverjetneje kaže nekam drugam (na star strežnik ali proxy).
Potrdite popravek
Znova poženite ukaze openssl iz razdelka Preverite sami, nato v PulseKeeperju odprite tarčo in na zavihku Kontrolni seznam kliknite Preveri zdaj.