Proč přestalo fungovat Forestry CMS u webů propojených s Githubem

Kvůli změnám zabezpečení GitHubu přestal na začátku ledna 2022 fungovat redakční systém Forestry na množství webů, mezi nimi i desítka webů našich klientů. Pojďme se podívat, čím byl tento problém způsoben a jak ho případně v budoucnu vyřešit z pozice vývojáře.

Propojení s repozitářem

Forestry je tzv. git-based redakční systém. To znamená, že funguje na principu commitování (zapisování) jednotlivých změn do připojeného git repozitáře. Ten může být hostován u providerů jako je Github, Gitlab, Bitbucket nebo Azure Repos, ale i na vlastním serveru. Forestry s ním potom komunikuje pomocí git nebo https protokolu.

Kde byl problém

Jak je patrné z chyby, která se zobrazovala uživatelům při snaze provést na svém webu nějaké změny, komunikovalo Forestry s Githubem pomocí kombinace podepisovacího algoritmu RSA s hashovací funkcí SHA-1, která dnes už není považovaná za dostatečně bezpečnou. Od 11. ledna 2022 GitHub tento způsob komunikace přestal podporovat, což ovlivnilo chod Forestry. To nebylo schopné s žádným repozitářem na GitHubu komunikovat.

ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.

Jak na rychlé vyřešení problému

Protože několik našich klientů využívá pro spravování webu právě Forestry a nevěděli jsme, kdy bude chyba ze strany Forestry opravená, museli jsme co nejrychleji jednat. Rozhodli jsme se přesunout všechny repozitáře na Gitlab a propojit je znovu jak s Forestry, tak s Netlify, které využíváme jako provozovatele hostingu. Naši klienti tak mohli své weby dále spravovat.

Ve skutečnosti ale existují dvě hlavní možnosti, jak můžete situaci řešit (v případě, že by někdy v budoucnu znovu nastala):

  • použití konkurenční platformy pro hosting repozitáře – jako již výše zmíněné Gitlab, Bitbucket a Azure Repos; budete muset provést migraci a propojit Forestry s novým repozitářem (vytvořit novou site a znovu provést základní konfiguraci nebo nastavení ukládání nahraných souborů),
  • použití konkurenčního CMS – můžete prozkoumat možnosti redakčních systémů jako je Netlify CMS, Strapi, Ghost, nebo Sanity; některé pro vás mohou být použitelnější než jiné, ať už z hlediska způsobu implementace (git-based vs. api-driven CMS) nebo komplexnosti.

První možnost je rychlá a účinná, může zároveň sloužit jako pouze dočasné řešení situace. Druhá možnost naopak vyžaduje více úprav a změn, jako třeba úplně novou konfiguraci jiného redakčního systému nebo úplné přepsání webu.

Náprava chyby ze strany Forestry

Hned v den chyby se na Slacku Forestry rozběhla na toto téma diskuze – lidé začali chybu vývojářům hlásit a ti se jí začali zabývat. V brzkých ranních hodinách dalšího dne byla chyba již opravena a weby napojené na GitHub začaly znovu fungovat. Skvělá práce!