Community
60
HostiServer
2026-02-08 13:06:00

SSL/TLS certifikáty: nastavení HTTPS, Let's Encrypt, TLS 1.3

⏱️ Doba čtení: ~8 minut | 📅 Aktualizováno: 8. února 2026

Proč HTTPS není volba, ale nutnost

Web bez HTTPS v roce 2026 je jako obchod bez zámku na dveřích. Prohlížeče takové weby označují jako nebezpečné, Google je snižuje ve vyhledávání a uživatelé prostě odcházejí ke konkurenci.

SSL/TLS certifikát není jen o šifrování. Je o důvěře. Zelený zámek v adresním řádku říká návštěvníkovi: „zde je bezpečné zadat heslo a číslo karty". Bez něj klesá konverze, zejména na eCommerce webech — lidé se bojí zadávat platební údaje.

Chrome, Firefox a další prohlížeče zobrazují varování „Not Secure" pro HTTP weby. Některé firemní sítě zcela blokují přístup k nechráněným zdrojům. A od roku 2018 Google oficiálně používá HTTPS jako faktor hodnocení.

Dobrá zpráva: nastavení SSL/TLS je dnes jednodušší než kdy jindy. Let's Encrypt vydává bezplatné certifikáty, Certbot automatizuje proces a moderní webové servery mají vestavěnou podporu TLS 1.3.

V tomto průvodci probereme: jak funguje TLS 1.3, jak získat bezplatný certifikát přes Let's Encrypt, jak správně nakonfigurovat Nginx a Apache, a co je HSTS a OCSP Stapling — věci, které odlišují základní konfiguraci od profesionální.

SSL vs TLS: jaký je rozdíl

SSL (Secure Sockets Layer) je starý protokol, který se již nepoužívá. Poslední verze SSL 3.0 byla prohlášena za nebezpečnou již v roce 2015 kvůli zranitelnosti POODLE. TLS (Transport Layer Security) je jeho moderní nástupce, který se aktivně vyvíjí.

Termín „SSL" se ujal a používá se jako obecný název. Když lidé říkají „SSL certifikát", ve skutečnosti myslí certifikát pro TLS spojení. To je v pořádku — důležité je pochopit, že ve skutečnosti se používá TLS.

Historie verzí:

  • SSL 2.0, 3.0 — zastaralé, nebezpečné, nepoužívat
  • TLS 1.0, 1.1 — zastaralé od roku 2020, prohlížeče je nepodporují
  • TLS 1.2 — přijatelný pro kompatibilitu se staršími klienty
  • TLS 1.3 — doporučený standard od roku 2018, rychlejší a bezpečnější

Jak probíhá spojení (Handshake)

Když uživatel navštíví HTTPS web, dochází k „handshake":

  1. Client Hello — prohlížeč odesílá seznam podporovaných šifer a verzí TLS
  2. Server Hello — server odpovídá certifikátem, zvolenou šifrou a svým veřejným klíčem
  3. Verifikace — prohlížeč ověřuje certifikát přes certifikační autoritu (CA)
  4. Key Exchange — obě strany generují sdílený session klíč
  5. Šifrované spojení — veškerý následný provoz je šifrován session klíčem

TLS 1.3 zkrátil tento proces ze dvou „kol" na jedno (1-RTT handshake), což snižuje latenci o 50–100 ms při každém novém spojení. Pro opakovaná spojení je možný dokonce 0-RTT režim.

Proč je TLS 1.3 důležitý

TLS 1.3 není jen „nová verze". Je to významné zlepšení bezpečnosti a rychlosti:

Bezpečnost:

  • Odstraněny zastaralé šifry (RC4, DES, MD5)
  • Všechna spojení používají Perfect Forward Secrecy
  • Méně možností pro downgrade útoky

Rychlost:

  • Handshake v 1 RTT místo 2 (rychlejší navázání spojení)
  • 0-RTT resumption pro opakovaná spojení
  • Méně dat přenášených během handshake

ℹ️ Podpora: K roku 2026 TLS 1.3 podporují všechny moderní prohlížeče (Chrome, Firefox, Safari, Edge) a většina mobilních zařízení. Není důvod ho nepoužívat.

Který certifikát vybrat

Certifikáty se neliší úrovní šifrování (ta je stejná), ale úrovní ověření vlastníka:

Typ Ověření Pro koho Cena
DV (Domain Validated) Pouze doména Blogy, portfolia, malé weby Zdarma (Let's Encrypt)
OV (Organization Validated) Doména + organizace Firemní weby, e-shopy 50–200 $/rok
EV (Extended Validation) Úplné ověření firmy Banky, platební systémy 200–500 $/rok

DV (Domain Validation)

Nejjednodušší typ. Certifikační autorita ověřuje pouze to, že kontrolujete doménu — přes email, DNS záznam nebo HTTP soubor. Vydává se automaticky během minut. Let's Encrypt vydává právě tyto certifikáty.

OV (Organization Validation)

Dodatečně se ověřuje existence organizace: registrační dokumenty, adresa, telefon. Proces trvá 1–3 dny. V certifikátu je uvedeno jméno společnosti — je vidět po kliknutí na zámek v prohlížeči.

EV (Extended Validation)

Nejpřísnější ověření: právní status firmy, fyzická adresa, podpisové právo od oprávněné osoby. Dříve prohlížeče zobrazovaly zelený adresní řádek s názvem firmy, ale od roku 2019 byla tato vizuální odlišnost odstraněna.

Wildcard certifikáty

Pokud máte mnoho subdomén (shop.example.com, blog.example.com, api.example.com, staging.example.com), místo jednotlivých certifikátů můžete získat jeden Wildcard certifikát na *.example.com. Let's Encrypt je vydává zdarma, ale vyžaduje se DNS verifikace.

Důležité: Wildcard pokrývá pouze jednu úroveň subdomén. *.example.com funguje pro shop.example.com, ale ne pro dev.shop.example.com.

Co vybrat?

Pro 90 % projektů stačí bezplatný DV certifikát od Let's Encrypt. Poskytuje stejné šifrování jako placené varianty. Rozdíl je pouze v úrovni ověření organizace — pokud nejste banka a nezpracováváte zvláště citlivá data, není to kritické.

OV má smysl pro firmy, kterým záleží na zobrazení oficiálního názvu v certifikátu. EV — pro finanční organizace a platební systémy, kde je maximální důvěra kritická.

Získání certifikátu přes Certbot

Let's Encrypt je bezplatná certifikační autorita vytvořená v roce 2015 pro popularizaci HTTPS. K roku 2026 vydali přes miliardu certifikátů a obsluhují více než 300 milionů webů.

Certbot je oficiální klient pro práci s Let's Encrypt. Automatizuje získání, instalaci a obnovu certifikátů.

Instalace Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot
# Pro Nginx
sudo apt install python3-certbot-nginx
# Pro Apache
sudo apt install python3-certbot-apache
# CentOS/RHEL
sudo dnf install certbot python3-certbot-nginx

Získání certifikátu pro Nginx

# Automatická konfigurace (doporučeno)
# Certbot sám změní konfiguraci Nginx
sudo certbot --nginx -d example.com -d www.example.com
# Pouze získat certifikát (bez změny konfigurace)
# Užitečné pokud chcete konfigurovat ručně
sudo certbot certonly --nginx -d example.com
# Pro server bez webového serveru (standalone režim)
# Certbot dočasně spustí vlastní server na portu 80
sudo certbot certonly --standalone -d example.com

Získání certifikátu pro Apache

sudo certbot --apache -d example.com -d www.example.com

Wildcard certifikát

Pro Wildcard je vyžadována DNS verifikace (HTTP verifikace není podporována):

sudo certbot certonly --manual --preferred-challenges dns \
  -d example.com -d "*.example.com"

Certbot zobrazí TXT záznam, který je třeba přidat do DNS vaší domény. Po přidání stiskněte Enter pro pokračování. Certifikát bude uložen v /etc/letsencrypt/live/example.com/.

Kde jsou certifikáty uloženy

/etc/letsencrypt/live/example.com/
├── cert.pem       # Certifikát domény
├── chain.pem      # Mezilehlé certifikáty
├── fullchain.pem  # cert.pem + chain.pem (použijte tento!)
└── privkey.pem    # Privátní klíč

⚠️ Důležité: Certifikáty Let's Encrypt jsou platné 90 dní. Je to záměrné pro bezpečnost — kratší platnost snižuje rizika při kompromitaci klíče. Nezapomeňte nastavit automatickou obnovu (viz sekce níže).

Konfigurace Nginx s TLS 1.3

Základní konfigurace po Certbotu funguje, ale lze ji vylepšit pro maximální bezpečnost a rychlost:

server {
    listen 80;
    server_name example.com www.example.com;
    
    # Přesměrování HTTP → HTTPS
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl http2;
    server_name example.com www.example.com;
    
    # Let's Encrypt certifikáty
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    # Moderní protokoly
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # Bezpečné šifry (TLS 1.3 používá vlastní automaticky)
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    
    # OCSP Stapling (zrychluje ověření certifikátu)
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    
    # SSL sessions (snižuje zátěž při opakovaných spojeních)
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    
    # HSTS (vynucený HTTPS)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
    
    # Zbytek konfigurace...
    root /var/www/example.com;
    index index.html index.php;
}

Po změně konfigurace ověřte a restartujte Nginx:

sudo nginx -t
sudo systemctl reload nginx

Konfigurace Apache s TLS 1.3

# /etc/apache2/sites-available/example.com.conf
# Přesměrování HTTP → HTTPS
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    
    # SSL nastavení
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    
    # Moderní protokoly
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    
    # Bezpečné šifry
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
    SSLHonorCipherOrder off
    
    # OCSP Stapling
    SSLUseStapling on
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    
    # HSTS
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</VirtualHost>

Povolte potřebné moduly a restartujte Apache:

sudo a2enmod ssl headers
sudo a2ensite example.com.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

HSTS: vynucený HTTPS

HSTS (HTTP Strict Transport Security) je HTTP hlavička, která říká prohlížeči: „vždy používej HTTPS pro tento web". I když uživatel zadá http://example.com nebo klikne na starý HTTP odkaz, prohlížeč automaticky přejde na HTTPS bez dotazu na server.

Proč je to důležité:

  • Ochrana před SSL stripping útoky — útočník nemůže zachytit první HTTP požadavek a nahradit ho
  • Rychlejší spojení — žádné přesměrování přes server, prohlížeč jde přímo na HTTPS
  • Uživatel fyzicky nemůže přistoupit přes HTTP — i když velmi chce
  • Dodatečná ochrana — v kombinaci s DDoS ochranou vytváří spolehlivý bezpečnostní perimetr

Konfigurace:

# Nginx
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
# Apache
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

Parametry:

  • max-age=63072000 — 2 roky v sekundách. Prohlížeč si toto nastavení zapamatuje na 2 roky
  • includeSubDomains — aplikovat HSTS na všechny subdomény
  • preload — umožňuje přidat doménu do vestavěného seznamu prohlížečů (viz hstspreload.org)

HSTS Preload

Je tu jeden problém: při první návštěvě prohlížeč ještě neví o HSTS a dělá běžný HTTP požadavek. Pro uzavření této mezery můžete přidat doménu do HSTS Preload List — vestavěného seznamu v prohlížečích Chrome, Firefox, Safari.

Požadavky pro preload:

  • Platný HTTPS na hlavní doméně
  • Přesměrování z HTTP na HTTPS
  • HSTS hlavička s max-age minimálně 1 rok, includeSubDomains a preload
  • Všechny subdomény musí také fungovat přes HTTPS

⚠️ Pozor: Po povolení HSTS se ujistěte, že HTTPS funguje správně na všech subdoménách. Pokud vyprší certifikát nebo se něco rozbije — uživatelé se nedostanou na web vůbec, ani přes HTTP. Odstranění z preload listu trvá měsíce.

Automatická obnova certifikátů

Certifikáty Let's Encrypt jsou platné 90 dní. Certbot automaticky vytváří systemd timer nebo cron job pro obnovu, ale lepší je ověřit:

# Kontrola systemd timeru
sudo systemctl status certbot.timer
# Nebo kontrola cronu
cat /etc/cron.d/certbot

Ruční kontrola obnovy

# Testovací spuštění (bez skutečné obnovy)
sudo certbot renew --dry-run
# Vynucená obnova všech certifikátů
sudo certbot renew

Pokud auto-obnova není nastavena

Přidejte do crontab:

# Otevřít crontab
sudo crontab -e
# Přidat řádek (obnova dvakrát denně)
0 0,12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

--post-hook restartuje Nginx po úspěšné obnově certifikátu.

Ověření konfigurace

Po nastavení nezapomeňte ověřit, že vše funguje správně. Chyby v SSL konfiguraci mohou vést k nedostupnosti webu nebo snížení bezpečnosti.

Online nástroje

SSL Labs Server Test — nejpopulárnější a nejdetailnější služba. Analyzuje:

  • Verze protokolů (TLS 1.2, 1.3)
  • Podporované šifry a jejich bezpečnost
  • Řetězec certifikátů
  • Známé zranitelnosti (Heartbleed, POODLE, BEAST)
  • Nastavení HSTS, OCSP Stapling

Cíl — získat hodnocení A nebo A+. Konfigurace z tohoto článku dává A+.

Další užitečné služby:

  • Hardenize — komplexní kontrola bezpečnosti (SSL, DNS, email)
  • Security Headers — kontrola HTTP bezpečnostních hlaviček
  • HSTS Preload — kontrola připravenosti na HSTS preload

Ověření z terminálu

# Základní kontrola certifikátu a řetězce
openssl s_client -connect example.com:443 -servername example.com
# Kontrola data vypršení certifikátu
echo | openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -dates
# Kontrola podpory TLS 1.3
openssl s_client -connect example.com:443 -tls1_3
# Kontrola podpory TLS 1.2
openssl s_client -connect example.com:443 -tls1_2
# Detailní informace o certifikátu
echo | openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -text

Ověření HSTS

curl -I https://example.com 2>/dev/null | grep -i strict

Mělo by vrátit: Strict-Transport-Security: max-age=63072000; includeSubDomains

Ověření přesměrování HTTP → HTTPS

curl -I http://example.com

Mělo by vrátit 301 Moved Permanently s Location: https://example.com/

Časté chyby

❌ Mixed Content — některé zdroje se načítají přes HTTP

Prohlížeč blokuje HTTP zdroje na HTTPS stránce. Zkontrolujte všechny odkazy na obrázky, skripty, styly. Používejte relativní URL (/images/logo.png) nebo protokol-nezávislé (//cdn.example.com/script.js). V DevTools prohlížeče záložka Console ukáže všechny problematické zdroje.

❌ Certifikát nepokrývá www nebo subdoménu

Při získání certifikátu uveďte všechny potřebné domény: -d example.com -d www.example.com. Nebo použijte Wildcard certifikát pro všechny subdomény.

❌ Neúplný řetězec certifikátů (chain)

Server musí odeslat nejen svůj certifikát, ale i mezilehlé. Let's Encrypt poskytuje fullchain.pem — používejte ho, ne cert.pem.

❌ Smyčka přesměrování HTTP ↔ HTTPS

Často se stává když webový server i CDN/proxy dělají přesměrování. Ujistěte se, že přesměrování je nastaveno pouze na jednom místě. Pokud používáte Cloudflare — nastavte SSL režim na „Full (strict)".

❌ Zapomněli obnovit certifikát

Web přestane fungovat, prohlížeče zobrazují děsivé varování. Nastavte auto-obnovu přes Certbot a monitoring data vypršení. Služby jako UptimeRobot mohou upozornit na vypršení certifikátu předem.

🚀 Připraveni vybrat správný hosting?

Flexibilita Cloud (VPS) nebo výkon dedikovaných serverů — řešení která rostou s vámi.

💻 Cloud (VPS) Hosting

  • Od 19,95 $/měs — Začněte v malém, škálujte okamžitě
  • KVM virtualizace — Garantované zdroje bez oversellingu
  • Okamžité upgrady — Bez výpadku
  • NVMe úložiště — Rychlý výkon
  • 24/7 podpora — <10 min odpověď

🖥️ Dedikované servery

  • Od 200 $/měs — Moderní konfigurace
  • Vlastní konfigurace — Intel nebo AMD, nejnovější modely
  • Více lokalit — EU + USA
  • 99,9% uptime — Spolehlivost
  • DDoS ochrana — Zahrnuto
  • Bezplatná migrace — Pomůžeme
  • Private Cloud podpora — Proxmox, VMware, OpenStack

💬 Nejste si jisti kterou variantu potřebujete?
💬 Napište nám a se vším pomůžeme!

Často kladené otázky

Ovlivňuje SSL rychlost webu?

TLS 1.3 přidává minimální latenci (pár milisekund) při prvním spojení. Ale HTTP/2 a HTTP/3, které fungují pouze přes HTTPS, výrazně zrychlují načítání stránek. Výsledkem je, že HTTPS weby jsou obvykle rychlejší.

Jaký je rozdíl mezi placeným a bezplatným certifikátem?

Šifrování je stejné. Rozdíl je v úrovni ověření: DV ověřuje pouze vlastnictví domény, OV/EV ověřují i organizaci. Pro většinu webů je bezplatný Let's Encrypt dostačující.

Jak přenést certifikát na jiný server?

Zkopírujte soubory z /etc/letsencrypt/live/domain/ a /etc/letsencrypt/archive/domain/ na nový server. Nebo jednoduše získejte nový certifikát přes Certbot — to je rychlejší.

Co dělat když SSL Labs ukazuje hodnocení B nebo nižší?

Nejčastější příčiny: povolené TLS 1.0/1.1, slabé šifry, chybějící HSTS. Použijte konfiguraci z tohoto článku — dává hodnocení A/A+.

Potřebuji SSL pro web bez formulářů a plateb?

Ano. Google považuje HTTPS za faktor hodnocení. Prohlížeče označují HTTP weby jako nebezpečné. Let's Encrypt je zdarma — není důvod ho nepoužívat.

Contents

Sdílejte tento článek

MANAGED VPS STARTING AT

$19 95 / mo

NEW INTEL XEON BASED SERVERS

$80 / mo

CDN STARTING AT

$0 / mo

 

Tento web používá cookies. Používáním tohoto webu souhlasíte s politikou ochrany osobních údajů.