tls-sni-01 funguje tak, ze se hashuje token + '.' + key. token je soucasti konkretni challenge, key je udaj z uctu zadatele. Vystaveny certifikat je na pouze jedno jmeno a to je ten hash. HTTPS client se pak na jmeno dotaze a pokud mu server odpovi, je overen.
tls-sni-02 hashuje zvlast token a zvlast key. Self-signed certifikat je na dve domenove jmena a to na hash tokenu a hash key (s tim acme.invalid okolo). HTTPS client se pta na hash tokenu a nesmi nijak prozradit key. Overi tedy, ze zadatel zna key.
Z diskuse okolo vyplynulo, ze nektere web-hostingy umoznuji nahrat libovolny HTTPS certifikat pres web rozhrani. U tls-sni-01 ale musi znat dopredu key. HTTPS client sice key efektivne prozradi, ale to uz je pozde na to, aby tam utocnik nahral certifikat pres web rozhrani. Zaroven se asi key nedozvi pro dalsi pokus (key se narozdil od tokenu nemeni).
Nevsiml jsem si, ze by Lets Encrypt zakazal i tls-sni-02. Pokud ano, zrejme nejak dochazi k prozrazeni key.
Díky za pěkné shrnutí, ta verze 02 je tím pádem o něco bezpečnější, ale proti problému se sdílenými hostingy je stejně neúčinná.
Z diskuse okolo vyplynulo, ze nektere web-hostingy umoznuji nahrat libovolny HTTPS certifikat pres web rozhrani. U tls-sni-01 ale musi znat dopredu key. HTTPS client sice key efektivne prozradi, ale to uz je pozde na to, aby tam utocnik nahral certifikat pres web rozhrani. Zaroven se asi key nedozvi pro dalsi pokus (key se narozdil od tokenu nemeni).
Jaktože ne? Když vystupuji v roli žadatele o certifikát, dostanu od autority (bez ohledu na verzi 01 nebo 02) přesné zadání, jaký mám vytvořit self-signed certifikát a musím nahrát ho na hosting. Není na to žádný (zásadní) časový limit. Teprve až ho na hosting nahraju, sdělím autoritě, ať to prověří. Nemusím tedy sedět na hostingu a čekat, na co se bude autorita ptát a na základě toho vyrobit certifikát, což je útok, proti kterému verze 01 nechrání, ale verze 02 ano.
Nevsiml jsem si, ze by Lets Encrypt zakazal i tls-sni-02
To proto, že ho zatím nepodporují.
Mimochodem, metoda ověřování http-01
používá k ověření také řetězec <jméno ověřovaného souboru>.<hash klíče účtu>
, což vedlo k vynálezu stateless režimu, kdy webserver pozitivně ověří jakoukoli výzvu z daného ACME účtu. Nevím, co si o tom mám myslet, na jednu stranu je to drobné zjednodušení pro administrátory, na druhou stranu to klade obrovské nároky na ochranu privátního klíče ACME účtu, protože se z něj vlastně stal zlatý klíč pro vydávání jakýchkoli certifikátů.
Ano, týká. Certbot metodu používá ve výchozím nastavení. Můžete ho zkusit ručně přepnout pomocí nějakého přepínače, nebo počkat na update, který to udělá za vás.