Let’s Encrypt myöntää varmenteita yhdeksäksikymmeneksi päiväksi ja uusii ne automaattisesti, ja siksi niitä lakataan ajattelemasta viikko käyttöönoton jälkeen. Ongelma on siinä, että automaattinen uusiminen hajoaa hiljaa: kukaan ei näe virheitä, ja kolme kuukautta myöhemmin kävijöitä vastassa on selaimen varoitus. Vuodesta 2025 lähtien Let’s Encrypt ei enää lähetä muistutuksia vanhenemisesta, joten viimeinenkin ulkoinen muistutus on poissa.
Alla syyt, joiden takia uusiminen lakkaa toimimasta, yleisyysjärjestyksessä.
1. Varmenne uusittiin, mutta palvelu ei ladannut sitä
Yleisin. certbot renew meni läpi, uusi tiedosto on levyllä, mutta nginx tai Apache pitää yhä vanhaa muistissa — ja tarjoaa sitä kävijöille, kunnes asetukset ladataan uudelleen. Muodollisesti kaikki on kunnossa, käytännössä sivustolla on vanhentunut varmenne.
Tämän korjaa koukku, joka ajetaan onnistuneen uusimisen jälkeen:
sudo certbot renew --deploy-hook "systemctl reload nginx"
Se kirjoitetaan kerran uusimistiedostoon (/etc/letsencrypt/renewal/example.com.conf, osio [renewalparams], rivi renew_hook) ja toimii sen jälkeen itsestään.
2. Verkkopalvelin vaihtui, mutta vahvistus jäi
HTTP-01-vahvistus edellyttää, että tiedosto polusta /.well-known/acme-challenge/ tarjotaan tavallisella HTTP:llä. Se hajoaa yleensä näin:
- asetuksiin lisättiin ehdoton uudelleenohjaus HTTP:stä HTTPS:ään — vahvistus päätyy uudelleenohjaukseen eikä mene läpi;
- ilmestyi sääntö
location ~ /\.jadeny all, joka sulkee kaikki pisteellä alkavat hakemistot, myös.well-known; - sivuston juurihakemisto vaihtui, kun taas certbotin asetuksissa on vanha
--webroot-path; - otettiin käyttöön maaesto tai perustodennus, joka osui myös vahvistuspalvelimeen.
Oikea järjestys asetuksissa: ensin oma location polulle /.well-known/acme-challenge/, ja vasta sitten yleinen uudelleenohjaus.
3. Ajastin on pois päältä
Uusimisen käynnistää systemd-ajastin tai cron-tehtävä, ja molemmat voi kytkeä vahingossa pois vianetsinnässä tai kadottaa palvelimen siirron yhteydessä.
systemctl list-timers | grep certbot
sudo certbot renew --dry-run
Toinen komento ajaa koko uusimissyklin koetilassa kuluttamatta kiintiöitä. Se on ainoa tarkistus, joka vastaa kysymykseen ”uusiutuuko se kuukauden päästä” etukäteen eikä jälkikäteen.
4. Verkkotunnus ei enää osoita tänne
Varmenne kattaa viisi verkkotunnusta, yksi niistä on siirtynyt toiselle hostingille ja DNS on muuttunut. Tuon verkkotunnuksen vahvistus lakkaa menemästä läpi, eikä certbot uusi koko varmennetta — yhdessä neljän toimivan verkkotunnuksen kanssa. Tarpeettomat verkkotunnukset on poistettava varmenteesta, ei sivuutettava.
5. Kiintiöt on saavutettu
Let’s Encrypt rajoittaa varmenteiden määrää verkkotunnusta ja viikkoa kohti. Se johtuu yleensä silmukasta ”ei onnistunut, kokeilen uudelleen” vianetsinnän aikana. Kokeiluja varten on testipalvelin (--dry-run tai --test-cert), ja sitä on käytettävä ennen kuin kiintiö on käytetty, ei sen jälkeen.
Tarkista se, mitä tarjotaan
Jokaisessa tiedostoihin perustuvassa tarkistuksessa on yksi heikkous: tiedosto voi olla tuore, mutta kävijä saa silti vanhan varmenteen. On katsottava asiakkaan puolelta:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -dates -subject -issuer
Valitsin -servername on pakollinen: ilman sitä saat monen sivuston palvelimella ensimmäisen sattuman virtuaalipalvelimen varmenteen etkä sitä, mitä kysyit. Tulosteessa notAfter on todellinen vanhenemispäivä.
Tarkista samalla ketju:
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
Jos varmenteita on yksi, välivarmennetta ei tarjota. Selaimet yleensä antavat tuon anteeksi — ne täydentävät ketjun itse — kun taas curl, mobiilisovellukset ja Java-asiakkaat heittävät vahvistusvirheen. Tämä on klassinen ”minulla kaikki aukeaa, asiakkaalla ei toimi”.
Kuinka monta päivää etukäteen varoitetaan
Kolmekymmentä päivää on järkevä ensimmäinen kynnys: täsmälleen niin paljon on jäljellä, kun certbot aloittaa uusimisyrityksensä, joten jos siihen mennessä ei ole tapahtunut mitään, mekanismi on rikki. Neljätoista päivää on toinen signaali ja vaatii toimia jo tänään. Seitsemän on hätätilanne.
Tärkeää on seurata kaikkia varmenteita yhtä aikaa, myös niitä jotka eivät ole Let’s Encryptiltä: vuodeksi ostetut unohtuvat varmimmin, koska vuoden aikana ehtivät unohtua sekä ne että se, kenen osoitteeseen muistutukset menevät. Yksi sivu, jolla on verkkotunnusten lista, päivämäärät ja jäljellä olevat päivät, sulkee asian kokonaan — kuten alla olevassa esittelyssä.