Obnova certifikátu přes ACME.sh za proxy

Obnova certifikátu přes ACME.sh za proxy
« kdy: 18. 07. 2023, 14:53:32 »
Zdravím,

v interní síti máme web server (Ubuntu, nginx, atd.) s několika službami, které jsou pokryty certifikáty od Let’s Encrypt’s. Z obnovy dvou certifikátů jednou za čas v případě potřeby, se stalo násobně více certifikátů s pravidelnou obnovou.

Samotný web server nemá přístup do internetu, aktualizace balíčků z repositářů jde přes proxy.
Pro obnovu certifikátů bych chtěl použít ACME.sh, nicméně jsem nikde nenašel, že to bylo schopné provést připojení k serverům přes proxy.

Je možné nastavit ACME, aby komunikovalo přes proxy, případně je alternativa, která by to uměla?

Děkuji.


alfi

  • ****
  • 337
    • Zobrazit profil
    • E-mail
Re:Obnova certifikátu přes ACME.sh za proxy
« Odpověď #1 kdy: 18. 07. 2023, 16:06:05 »
Letsencrypt potřebuje pro (http) validaci na server vidět z internetu na /.well-known/... - to v interní síti spíš neprojde? :) Já bych na interní server nasadil nějakou novou doménu a letsencrypt validaci nastavil přes dns - pak stačí, aby acme/dehydrated apod. umělo zatahat za nějaké API a do té dns při každé obnově uložit validační klíč (jednoduše to jde třeba u subreg.cz). Navíc jde takhle ověřit wildcard doménu, tj. výsledek jde použít na všech interních serverech :)

Re:Obnova certifikátu přes ACME.sh za proxy
« Odpověď #2 kdy: 18. 07. 2023, 18:09:24 »
Pro obnovu certifikátu ACME protokolem potřebujete prokázat vlastnictví domény. Buď přes HTTP (musíte na webové adrese, pro kterou certifikát získáváte, zveřejnit soubor s daným obsahem) – tj. potřebujete, aby se z internetu daný DNS záznam přeložil na nějaký webový server, na kterém bude vystavený alespoň ten jeden soubor. Nebo přes DNS – je potřeba do zóny příslušné domény vložit správný TXT záznam. (Ostatní metody se moc nepoužívají a mají stejné požadavky, jako HTTP metoda). Řešení s DNS je u interních webů méně invazivní – nemusíte řešit, aby se na internetu DNS název překládal na server zprostředkující ověření a ve vnitřní síti na adresu se skutečným webem.

Za mne je nejjednodušší řešení použít Caddy server – klidně jen v roli reverzního proxy serveru. Použití Let's Encrypt certifikátů obecně tam nakonfigurujete tak, že server prostě spustíte – Caddy má zabudovanou automatickou výměnu certifikátů přes Let's Encrypt a ta je ve výchozím nastavení zapnutá. Používá ale ve výchozím nastavení HTTP metodu, nicméně lze ho přepnout na použití DNS metody. Umí se napojit na API spousty poskytovatelů DNS služeb, takže jenom nakonfigurujete, že pro danou doménu se má používat DNS metoda, který DNS poskytovatel se má použít a přístupové údaje k poskytovateli, a o zbytek už se postará Caddy.

Konfigurace vydávání certifikátů v Caddy pak může vypadat třeba takhle:
Kód: [Vybrat]
{
  "module": "acme",
  "ca": "https://acme-v02.api.letsencrypt.org/directory",
  "email": "**********",
  "challenges": {
    "dns": {
      "provider": {
        "name": "cloudflare",
        "api_token": "**************************"
      }
    }
  }
}

(Je to JSON, protože mi připadá přehlednější a udržovatelnější. Caddy má ale možnost používat i svůj vlastní formát konfigurace, který je zjednodušený a kde by to nejspíš zabralo jeden či dva řádky.)

Re:Obnova certifikátu přes ACME.sh za proxy
« Odpověď #3 kdy: 24. 07. 2023, 18:33:00 »
Díky za odpověď.
S přístupem k well_known souboru problém nemám, jde to přes proxy a stejnou cestou zpět přes proxy bych zase potřeboval stahovat cert.
Asi to ne výsledku vyřeším dalším serverem, který se bude starat pouze o cert a ty dále budu distribuovat v rámci interní sítě.