08/06/2022
S příchodem každé nové verze operačního systému iOS se objevují nové výzvy a zpřísňují se bezpečnostní standardy. iOS 15 není výjimkou, a proto se mnoho uživatelů setkává s nečekanými problémy s certifikáty TLS (Transport Layer Security), které jsou klíčové pro zabezpečenou komunikaci na internetu. Ať už spravujete vlastní server, používáte specifické aplikace, nebo se jen snažíte odeslat e-mail, správná konfigurace TLS je nezbytná. V tomto článku se podrobně podíváme na nejčastější problémy, se kterými se uživatelé iOS 15 potýkají, a nabídneme konkrétní řešení. Porozumění tomu, jak iOS 15 pracuje s certifikáty, je zásadní pro zajištění plynulého a bezpečného digitálního zážitku.

Bitwarden a certifikáty TLS na iOS 15: Proč aplikace selhává?
Mnoho technicky zdatných uživatelů si oblíbilo samoobslužné (self-hosted) varianty populárních služeb, jako je správce hesel Bitwarden. To jim dává plnou kontrolu nad svými daty. Nicméně, zprovoznění takového řešení na iOS 15 může být překvapivě komplikované, i když webové rozhraní funguje bezchybně v prohlížeči Safari.
Problém často nastává, když mobilní aplikace Bitwarden odmítá navázat TLS spojení se serverem chráněným reverzní proxy (např. Nginx) a certifikátem Let's Encrypt, zatímco webové rozhraní (dokonce i v Safari na iOS 15) funguje bez problémů. Zmatek se prohlubuje, když aplikace Bitwarden na stejném zařízení bez problémů přijímá certifikát pro oficiální službu Bitwarden.com, který je rovněž od Let's Encrypt.
Požadavky iOS 15 na certifikáty
Apple klade na důvěryhodné certifikáty přísné požadavky, které se v průběhu let vyvíjely. Pro iOS 15 jsou klíčové následující body, vycházející z požadavků pro iOS 13 a macOS 10.15, které jsou stále relevantní:
- Algoritmus hašování: Certifikáty TLS serverů a vydávající CA musí používat hašovací algoritmus z rodiny SHA-2 v algoritmu podpisu (např. SHA256).
- Doba platnosti: Certifikáty TLS serverů musí mít dobu platnosti 825 dní nebo méně.
- Velikost klíče RSA: Certifikáty TLS serverů a vydávající CA používající klíče RSA musí používat velikosti klíčů větší nebo rovné 2048 bitům.
- Rozšíření ExtendedKeyUsage (EKU): Certifikáty TLS serverů musí obsahovat rozšíření EKU s OID
id-kp-serverAuth. - Subjekt Alternativní Jméno (SAN): Certifikáty TLS serverů musí uvádět DNS jméno serveru v rozšíření Subject Alternative Name certifikátu.
Pokud váš certifikát splňuje všechny tyto požadavky, jako tomu bylo v popsaném případě, kde byl certifikát zkontrolován a vyhovoval, problém pravděpodobně spočívá jinde, často v konfiguraci serveru nebo klienta.
Analýza konfigurace Nginx a možná řešení
Podezření často padá na konfiguraci TLS na serveru Nginx. Ačkoli se zdá, že pro webové rozhraní funguje, mobilní aplikace mohou mít přísnější požadavky nebo odlišné implementace TLS klientů. Zde je typická problematická konfigurace Nginx, kterou je třeba zvážit:
ssl on; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES256-SHA:RC4-SHA:DES-CBC3-SHA; ssl_certificate /etc/letsencrypt/live/bw.ivan-kondratyev.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/bw.ivan-kondratyev.ru/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; Tato konfigurace obsahuje několik zastaralých a nebezpečných prvků:
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;: Zahrnuje velmi staré a zranitelné protokoly jako SSLv3, TLSv1 a TLSv1.1. Moderní aplikace a systémy, včetně iOS 15, preferují a často vyžadují alespoň TLSv1.2 a ideálně TLSv1.3. Některé aplikace mohou odmítnout spojení, pokud server nabízí slabší protokoly, i když prohlížeč může být tolerantnější.ssl_ciphers AES256-SHA:RC4-SHA:DES-CBC3-SHA;: Tyto šifry jsou také zastaralé a mají známé zranitelnosti (např. RC4). Mnoho moderních klientů je již nepodporuje nebo je považuje za nedostatečně bezpečné. To může vést k tomu, že se aplikace nedokáže dohodnout na společné šifře.
Řešení pro Nginx:
- Aktualizujte protokoly TLS: Změňte
ssl_protocolstak, aby zahrnovaly pouze moderní a bezpečné verze. Doporučuje seTLSv1.2 TLSv1.3. Starší protokoly by měly být odstraněny. - Aktualizujte šifry: Použijte modernější a bezpečnější šifrovací sady. Dobrým výchozím bodem je například konfigurace doporučená Mozilla SSL Configuration Generator nebo podobné nástroje. Příklad moderní a bezpečné konfigurace šifer:
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';. Nezapomeňte také nassl_prefer_server_ciphers on;pro serverovou preferenci šifer. - Zajistěte správný řetězec certifikátů: Ujistěte se, že soubor
fullchain.pemobsahuje kompletní řetězec certifikátů od vašeho certifikátu až po důvěryhodnou kořenovou CA (v případě Let's Encrypt obvykle ISRG Root X1). Někdy aplikace potřebují plný řetězec, aby mohly certifikát správně ověřit, a nejsou schopny si mezilehlé certifikáty samy stáhnout. - Kontrola logů aplikace: Pokud je to možné, zkontrolujte logy mobilní aplikace Bitwarden. Mohou poskytnout konkrétní chybové zprávy týkající se selhání TLS, které pomohou přesně identifikovat problém.
Problémy s Let's Encrypt v Safari na iOS: Proč interní stránky nefungují?
Někteří uživatelé, kteří spravují komplexní domácí sítě s reverzními proxy a interními DNS záznamy, se setkávají s tím, že jejich interní služby zabezpečené certifikáty Let's Encrypt nefungují v mobilním Safari na iOS/iPadOS, zatímco na macOS a Windows prohlížečích (včetně Safari) fungují bezchybně. Externí přístup přes Cloudflare funguje, což naznačuje, že problém je specifický pro interní nastavení a Let's Encrypt certifikáty.

Typická konfigurace zahrnuje Synology server, virtuální stroje (Plex, Homebridge, Unifi Controller) a centrální reverzní proxy VM (Nginx). Interně se používají Let's Encrypt certifikáty, zatímco externě Cloudflare. DNS záznamy jsou nastaveny tak, aby interní provoz směřoval na lokální IP reverzní proxy, zatímco externí na veřejnou IP. Problém se projevuje chybovou zprávou "Safari nemohl otevřít stránku, protože server přestal odpovídat". To se děje pouze při připojení přes Wi-Fi (tedy interně); po vypnutí Wi-Fi a připojení přes mobilní data (externě přes Cloudflare) stránky fungují.
Důležitost vypršení platnosti DST Root CA X3 (září 2021)
Jedním z nejdůležitějších a nejvíce matoucích problémů, které ovlivnily certifikáty Let's Encrypt v roce 2021, bylo vypršení platnosti kořenového certifikátu DST Root CA X3 dne 30. září 2021.
Let's Encrypt v minulosti používal tento kořenový certifikát pro křížové podepisování, aby zajistil kompatibilitu se staršími systémy. Novější certifikáty Let's Encrypt jsou primárně podepsány kořenovým certifikátem ISRG Root X1, který je již široce důvěryhodný ve většině moderních operačních systémů, včetně iOS 15.
Problém nastává, pokud váš server nebo prohlížeč na iOS stále používá nebo preferuje starší řetězec certifikátů, který vede přes DST Root CA X3. I když váš certifikát má správný řetězec (např. VášCertifikát -> R3 -> ISRG Root X1), některá zařízení nebo jejich cache mohou mít v paměti starý řetězec (např. VášCertifikát -> R3 -> DST Root CA X3). Pokud se pokusí ověřit certifikát pomocí tohoto zastaralého řetězce a zjistí, že DST Root CA X3 vypršel, spojení selže.

Zde je srovnávací tabulka řetězců:
| Řetězec certifikátu | Kořenová CA | Stav | Vliv na iOS 15 |
|---|---|---|---|
VášCertifikát -> R3 -> ISRG Root X1 | ISRG Root X1 | Aktivní a důvěryhodný | Mělo by fungovat bez problémů |
VášCertifikát -> R3 -> DST Root CA X3 | DST Root CA X3 | Expirovaný (30. září 2021) | Může způsobit chyby ověření na některých zařízeních/konfiguracích |
Řešení a doporučení
- Ověřte řetězec certifikátů serveru: Ujistěte se, že váš Nginx server podává správný plný řetězec certifikátů, který vede k ISRG Root X1. Můžete to zkontrolovat pomocí nástrojů jako
openssl s_client -connect yourdomain.com:443 -showcertsnebo online SSL checkerů. Ujistěte se, že souborfullchain.pemobsahuje správné mezilehlé certifikáty, a že server nepodává žádné zastaralé řetězce. - Vymažte cache na iOS: iOS zařízení mohou ukládat informace o důvěryhodnosti certifikátů. Zkuste:
- Vynucené restartování iPhone/iPad.
- Resetování síťových nastavení (Nastavení > Obecné > Přenést nebo resetovat iPhone > Obnovit > Obnovit nastavení sítě). Toto může pomoci vymazat interní cache související s TLS a DNS. Po resetu budete muset znovu zadat svá Wi-Fi hesla.
- Vymazání dat webových stránek v Safari (Nastavení > Safari > Smazat historii a data webových stránek). To odstraní lokálně uložené soubory, cookies a cache prohlížeče.
- Aktualizujte iOS: Ujistěte se, že máte nainstalovanou nejnovější verzi iOS 15. Apple pravidelně vydává aktualizace důvěryhodných kořenových certifikátů a opravy chyb.
- Nginx konfigurace: I když vaše
le_options.confvypadá moderně, zkontrolujte globální nastavení Nginx. Ujistěte se, že certifikáty jsou načítány správně a nejsou duplicity nebo konflikty. Problém s různými verzemi Nginx na Ubuntu 20 a 22, který zmínil uživatel, naznačuje, že i drobné rozdíly v instalaci mohou způsobit problémy. Vždy kontrolujte logy Nginx pro chyby při startu nebo při zpracování požadavků.
Potíže s e-mailem na iPhone 15: Proč jeden IMAP účet selhává?
Je frustrující, když jeden e-mailový účet nefunguje na iPhonu, zatímco ostatní IMAP účty na stejném zařízení fungují bez problémů a problémový účet funguje na MacBooku Pro. Tento typ problému, často se objevující na beta verzích iOS, naznačuje hlubší nesoulad mezi klientem (Mail.app na iOS 15) a serverem.
Možné příčiny a kroky k řešení
I když se nastavení zdají být identická, existují nuance, které mohou způsobit selhání:
- Beta software: Používání beta verze iOS 15 je významný faktor. Beta verze jsou nedokončené a mohou obsahovat chyby, které ovlivňují specifické konfigurace nebo protokoly. Apple se sice snaží chyby opravovat, ale ne vždy se to podaří okamžitě. Doporučuje se vyzkoušet problém na stabilní verzi iOS.
- Certifikát e-mailového serveru: I když webmail funguje, e-mailoví klienti mohou mít odlišné požadavky na certifikáty TLS. Zkontrolujte, zda certifikát vašeho IMAP serveru splňuje všechny požadavky iOS 15 (viz výše). Používá váš e-mailový server Let's Encrypt? Pokud ano, problém s vypršením DST Root CA X3 může být relevantní i zde. Ověřte platnost a důvěryhodnost certifikátu serveru pomocí online nástrojů.
- Autentizační metody: Některé e-mailové servery mohou podporovat více autentizačních metod. Možná, že Mail.app na iOS 15 beta má chybu s konkrétní metodou (např. zastaralé metody) nebo naopak vyžaduje modernější (např. OAuth2), kterou server nepodporuje. Zkuste experimentovat s různými možnostmi v nastavení účtu (pokud jsou k dispozici).
- Specifické konfigurace serveru: Váš e-mailový server může mít specifické nastavení, které je sice kompatibilní s macOS, ale ne s iOS. To může zahrnovat neobvyklé porty, specifické požadavky na handshake TLS, nebo dokonce whitelist/blacklist IP adres. Zkontrolujte dokumentaci vašeho poskytovatele e-mailu.
- Záznamy serveru: Nejdůležitější je zkontrolovat logy na straně e-mailového serveru. Ty by měly ukázat, proč spojení z vašeho iPhone selhává – zda jde o problém s autentizací, TLS, nebo něco jiného. Serverové logy jsou často nejpřesnějším zdrojem informací o selhání.
- Testování s jiným klientem: Zkuste nainstalovat jinou e-mailovou aplikaci z App Store (např. Outlook, Spark) a nakonfigurujte v ní problematický účet. Pokud to funguje, pak je problém téměř jistě v nativní aplikaci Mail.app a je třeba vyčkat na opravu od Applu.
- Nahlášení chyby Apple: Jelikož používáte beta software, je nezbytné nahlásit tento problém přímo společnosti Apple prostřednictvím Feedback Assistant. Poskytněte co nejvíce podrobností, včetně logů (pokud je to možné), aby Apple mohl problém efektivně řešit.
Platnost certifikátu a ruční nastavení data: Záhada předčasné expirace
Jeden z nejzáhadnějších problémů s certifikáty TLS na iOS 15 se týká situace, kdy certifikát, který je prokazatelně platný na všech ostatních zařízeních (notebooky, jiné iPhony/iPady, desktopy), je na jednom konkrétním iPhonu s iOS 15 označen jako "Expirovaný" před datem skutečné expirace. Ještě zvláštnější je, že problém zmizí, pokud na iPhonu ručně nastavíte datum před "falešnou" expirací.
Fenomén "expirace" certifikátu předčasně
Tento problém je téměř jistě spojen s již zmíněným vypršením platnosti kořenového certifikátu DST Root CA X3 od Let's Encrypt dne 30. září 2021. Jak již bylo vysvětleno, ačkoli moderní certifikáty Let's Encrypt používají řetězec VášCertifikát -> R3 -> ISRG Root X1, některá zařízení, zejména pokud již dříve komunikovala s tímto doménovým jménem, si mohou udržovat v cache starší informace o řetězci, který vedl přes expirovaný DST Root CA X3.
Když iPhone ověřuje certifikát, pokusí se sestavit řetězec důvěry od vašeho certifikátu až po důvěryhodnou kořenovou CA. Pokud má v cache starou informaci o mezilehlém certifikátu R3, který byl dříve podepsán DST Root CA X3, může se pokusit ověřit řetězec přes tento expirovaný kořen. I když server podává správný, nový řetězec, lokální cache na zařízení může způsobit problémy. Ruční nastavení data zpět do doby před 30. zářím 2021 obchází problém s vypršením platnosti DST Root CA X3, což potvrzuje tuto teorii.

Dopad na iOS zařízení a cache
Proč se to děje jen na jednom konkrétním iPhonu? Je to pravděpodobně způsobeno tím, že tento konkrétní telefon navštívil danou doménu v době, kdy byl ještě používán starý řetězec s DST Root CA X3, a uložil si tuto informaci do své cache. Ostatní zařízení, která buď nikdy nenavštívila danou doménu, nebo ji navštívila až po přechodu na nový řetězec a vypršení DST Root CA X3, nemají tento zastaralý záznam v cache a ověřují certifikát správně.
Verze Apple Trust Store, kterou zmiňujete (2021072200), je také relevantní. Ačkoli se ISRG Root X1 stal důvěryhodným v iOS 10 a novějších, a Apple aktualizuje svůj Trust Store, problém může spočívat v tom, jak jednotlivá zařízení zpracovávají a ukládají informace o certifikačních řetězcích, zejména v přechodném období, kdy existovaly oba typy řetězců.
Řešení
Kromě zajištění, že váš server vždy podává správný a aktuální řetězec certifikátů (VášCertifikát -> R3 -> ISRG Root X1), jsou klíčové kroky pro vyřešení problému na postiženém iPhonu:
- Resetování síťových nastavení: Jděte do Nastavení > Obecné > Přenést nebo resetovat iPhone > Obnovit > Obnovit nastavení sítě. Toto vymaže všechna uložená Wi-Fi hesla a síťová nastavení, ale je to nejúčinnější způsob, jak vyčistit cache spojenou s TLS a DNS. Po resetu budete muset znovu zadat svá Wi-Fi hesla.
- Vynucené restartování: I když to zní jednoduše, někdy může pomoci vyčistit dočasné chyby a obnovit systémové procesy.
- Vymazání dat prohlížeče: Prohlížeče jako Safari a Chrome mají vlastní cache. Vymazání historie a dat webových stránek v Safari (Nastavení > Safari > Smazat historii a data webových stránek) nebo vymazání dat prohlížení v Chrome může pomoci odstranit zastaralé informace o certifikátech.
- Aktualizace iOS: Ujistěte se, že váš iPhone má nejnovější dostupnou verzi iOS 15. Apple neustále vylepšuje zpracování certifikátů a důvěry, a novější verze mohou obsahovat opravy pro tento konkrétní problém.
Často kladené otázky (FAQ)
- Vyžaduje iOS 15 certifikát TLS?
- Ano, pro zabezpečenou komunikaci s webovými servery a aplikacemi vyžaduje iOS 15 certifikáty TLS, které splňují moderní bezpečnostní standardy a jsou podepsány důvěryhodnou kořenovou certifikační autoritou.
- Proč můj Let's Encrypt certifikát funguje v Safari na macOS, ale ne na iOS?
- Nejčastější příčinou je buď zastaralá konfigurace TLS na serveru (např. staré protokoly/šifry) nebo problém s řetězcem certifikátů související s vypršením platnosti kořenového certifikátu DST Root CA X3 od Let's Encrypt. iOS zařízení mohou být citlivější na tyto problémy nebo mít v cache staré informace.
- Co je DST Root CA X3 a proč způsobuje problémy?
- DST Root CA X3 byl kořenový certifikát používaný pro křížové podepisování certifikátů Let's Encrypt. Jeho platnost vypršela 30. září 2021. Některá starší zařízení nebo zařízení s persistentní cache se mohou pokusit ověřit certifikáty pomocí tohoto expirovaného kořene, což vede k chybám, i když server podává správný řetězec.
- Jak mohu zkontrolovat, zda můj server podává správný řetězec certifikátů?
- Můžete použít nástroj
openssl s_client -connect yourdomain.com:443 -showcertsna Linuxu/macOS nebo online SSL checker nástroje (např. SSL Labs Server Test), které vám ukáží kompletní řetězec certifikátů, který váš server podává. - Může beta verze iOS způsobit problémy s certifikáty?
- Ano, beta verze softwaru jsou určeny k testování a mohou obsahovat chyby nebo neúplné implementace funkcí, které mohou ovlivnit zpracování certifikátů TLS a síťovou komunikaci. Pro stabilní provoz se doporučuje používat veřejné stabilní verze iOS.
Problémy s certifikáty TLS na iOS 15 mohou být frustrující, ale ve většině případů jsou řešitelné. Klíčem je pochopení toho, jak iOS ověřuje certifikáty, a zajištění, že vaše serverová konfigurace je aktuální a splňuje všechny Apple požadavky. Nezapomeňte také na důležitost pravidelné aktualizace iOS a pečlivou kontrolu serverových logů, které často obsahují cenné informace o příčině selhání. V digitálním světě je bezpečnost prvořadá a správně nakonfigurované TLS je jejím základním pilířem.
Chceš-li si přečíst další články podobné jako iOS 15 a certifikáty TLS: Klíč k bezpečnému připojení, navštiv kategorii Technologie.
