Jo, tahle změna mě docela potrápila. Zkoušel jsem přejít na http validaci, ale ta mě pořád nechtěla fungovat:
- Dry run certbota mi házel z LE chybu 404
- Ovšem v logu Apache žádný pokus o validaci nebyl
- Když jsem validační URL testoval ze svého počítače (v úplně jiné síti), tak fungovalo naprosto v pořádku a v logu pokus byl
- Na serveru není žádný relevantní firewall
Schválně kdo si tipne, kde byla chyba? Já tím strávil přes hodinu :-D
Ten soubor opravdu fyzicky vzniká na disku v nějakém pracovním souboru certbotu. Až tak daleko jsem se při ladění toho problému dostal, že jsem všechno tohle prověřoval :)
Problém s vlastním serverem tam nebyl, certbot používal Apache.
Protože na to už asi nikdo další neodpoví, tak sem dám řešení: Mohlo za to všemi milované IPv6. Ta doména měla korektně nastavené DNS pro IPv4. Nicméně registrátor domény (u kterého mám DNS) přidal i záznam pro IPv6, který ale ukazoval na jeho parkovací server a já si toho nevšiml.
Když jsem to zkoušel od sebe, používalo se IPv4 a všechno šlapalo. LE ale použilo IPv6 a šlo na server poskytovatele, kde samozřejmě ověřovací kód nenašlo. A já proto v logu nic neviděl. Přišel jsem na to tak, že jsem to zkusil ještě z jiného počítače, který taky preferoval IPv6. Tak jsem zjistil, že tam to nefunguje a dostal i komplet znění té 404 odpovědi ze kterého bylo poznat, že je z jiného serveru (LE ho nedávalo). A už jsem byl doma. Takže jsem si alespoň na serveru korektně nakonfiguroval IPv6 :-) Ale nezkusit to z jiného serveru, asi bych tápal hodně dlouho.
A tady je starší, ale kompletní článek jak došlo ke zjištění a i jak se LE okamžitě zachoval.
How I exploited ACME TLS-SNI-01 issuing Let's Encrypt SSL-certs for any domain using shared hosting
https://labs.detectify.com/2018/01/12/how-i-exploited-acme-tls-sni-01-issuing-lets-encrypt-ssl-certs-for-any-domain-using-shared-hosting/