Já bych se chtěl zeptat na příbuzné téma: jak aktuálně funguje CT? Certifikát má v sobě potvrzení o tom, že byl zařazen do CT logu, nebo se musí prohlížeč doptat? Kontrolují prohlížeče zařazení?
Prohlížeč kontroluje, zda dostal potvrzení o zařazení do logu (SCT). Nikdy se sám přímo nedoptává logu, vždycky ho musí dostat buď v certifikátu nebo jako rozšíření v TLS handshake nebo v odpovědi OCSP responderu. Pokud vím, tak všechny autority vkládají SCT rovnou do certifikátu. Takhle to teď třeba vypadá na Rootu:
$ openssl x509 -noout -text -in root.cz.crt
…
CT Precertificate SCTs:
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 41:C8:CA:B1:DF:22:46:4A:10:C6:A1:3A:09:42:87:5E:
4E:31:8B:1B:03:EB:EB:4B:C7:68:F0:90:62:96:06:F6
Timestamp : Aug 27 08:01:14.939 2022 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:20:09:44:36:F5:4D:8F:15:B4:4F:4C:57:64:
84:96:AD:92:FB:D1:EE:A4:BA:E9:85:53:0A:E8:E4:63:
88:5F:E4:82:02:21:00:EB:67:3B:83:1D:41:03:95:F6:
17:99:26:B5:E0:A1:D5:F2:99:F3:30:55:FB:6F:52:4D:
4E:CB:58:1C:70:BC:1B
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 46:A5:55:EB:75:FA:91:20:30:B5:A2:89:69:F4:F3:7D:
11:2C:41:74:BE:FD:49:B8:85:AB:F2:FC:70:FE:6D:47
Timestamp : Aug 27 08:01:14.970 2022 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:20:7D:77:84:6D:F0:B2:CC:F1:1A:F7:52:CC:
7C:05:17:55:98:07:D5:21:56:13:D1:6B:CF:5E:B6:5B:
E6:70:A8:1E:02:21:00:E0:BD:D7:19:5A:D9:63:86:7C:
EB:3A:0F:77:96:A7:81:AC:91:04:E0:3F:3D:47:91:CF:
92:43:0D:8E:CB:14:14
…
Když prohlížeč platné potvrzení nedostane, skončí připojení chybou NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED.
Aha, díky, tak v tom případě by to mělo jít otestovat na https://no-sct.badssl.com/ - Firefox se mi připojil bez stěžování, Chromium taky, jen Chrome (oficiální googlí verze) si stěžovala.
Je to tak, podle všeho to vynucuje jen Chrome a Safari. Chromium podle dokumentace validuje, ale nevynucuje. Baličům se to nedoporučuje zapínat, protože není zajištěna častá aktualizace a kdyby došlo k nějaké zásadní změně mezi logy, mohlo by to rozbít uživatelům prohlížeč. To alespoň uvádí dokumentace.
Firefox je kapitola sama pro sebe, před pěti šesti lety se to v bugzille intenzivně řešilo, narazili na nějaké výkonnostní problémy a pak na nedostatečnou otestovanost kódu a nakonec to nějak vyšumělo. Firefox tedy SCT nevaliduje.
Ono to ale v praxi nevadí, protože Chrome a Safari dohromady pokrývají asi 75 % uživatelů a principem té validace je donutit autority vkládat všechny vystavené certifikáty do logů. Což se zjevně daří, protože pokud by to ty autority nedělaly, tři čtvrtiny uživatelů by přes ten certifikát neprošly. Výsledek je tedy zajištěn i bez Firefoxu.
14. 9. 2022, 10:25 editováno autorem komentáře