Let's Encrypt i własna domena

Witam serdecznie wszystkich forumowiczów a w szczególności gospodarza Artura. W związku z tym, że jestem w trakcie wdrażania się w tematy HA, możliwe, że moje pytanie będzie trywialne.

Proszę o wyjaśnienie jak wygląda sprawa odnawiania certyfikatu Let’s Encrypt? Po pomyślnym wygenerowaniu certyfikatu z danymi prywatnej domeny po dłuższym okresie cieszenia się zdalnym dostępem, od pewnego czasu z serwisu Let’s Encrypt otrzymuję wiadomości typu:

“Your certificate (or certificates) for the names listed below will expire in 10 days (on 03 Mar 21 12:42 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors.

We recommend renewing certificates automatically when they have a third of their total lifetime left. For Let’s Encrypt’s current 90-day certificates, that means renewing 30 days before expiration. See Integration Guide - Let's Encrypt - Free SSL/TLS Certificates for details.”

Próbowałem odnowić certyfikat uruchamiając ponownie jego generowanie w module Let’Encrypt HA. Niestety w logach mam informację.

23:22:04] INFO: Selected http verification
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for xxxx.xxxx.pl
Waiting for verification…
Challenge failed for domain xxxx.xxxx.pl
http-01 challenge for xxxx.xxxx.pl
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:

  • Domain: xxxx.xxxx.pl*
    Type: unauthorized
    Detail: Invalid response from https://xxxx.xxxx.pl/.well-known/acme-challenge/aaaaaaaaaaaaaaaaaaaaaaaa_aaaaaaaaaaaaaaa
    [1111:2222:3333::4444:5555]: 404
    To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address.
    [cont-finish.d] executing container finish scripts…
    [cont-finish.d] done.
    [s6-finish] waiting for services.
    [s6-finish] sending all processes the TERM signal.
    [s6-finish] sending all processes the KILL signal and exiting.

W konfiguracji Let’s Encrypt została podana prawidłowa nazwa domeny (taka sama nazwa została użyta wcześniej, i wtedy certyfikat wygenerował się prawidłowo a zdalny dostęp do HA z nazwą domenową po https działa do dzisiaj.

Czy taki stan jest prawidłowy? Wydaje mi się, że chyba kiedyś gdzieś czytałem, że w HA certyfikaty Let’s Encrypt odnawiają się automatycznie. Jeżeli tak, to czy powinienem zignorować wiadomości o zbliżającym się terminie wygaśnięcia certyfikatu?

Jeżeli jednak tak nie jest, to co powinienem zrobić aby zachować ciągłość dostępu do HA? Adresy DNS mojej domeny obsługiwane są przez serwis Clouflare.

Oczywiście, że nie.
Czy do generowania certyfikatu używasz Home Assistant Add-on: Letsencrypt? a w nim do potwierdzenia opcji http challenge? (to widzę w logach)
Czy nadal masz otwarty port TCP 80 wymagany do tego potwierdzenia?
Czy używasz Cloudflare do proxowania ruchu do HA?

Tak, używam Let’s Encrypt z pakietu Supervisor
Konfiguracja poniżej.
email: xxxx.xxx@gmail.com
domains:

    • xxxx.xxxx.pl*
      certfile: fullchain.pem
      keyfile: privkey.pem
      challenge: http
      dns: {}

Porty 80, 443, 8123 a nawet 1883 (zbieram dane po MQTT z zewnętrznej sieci) otwarte i skierowane na adres HA.

Uruchomiony Cloudflare jako proxy, lecz chyba nie on jest problemem bo póki co dostęp do HA mam, łącznie z TTS-em.

Jest otwarty, OK, czy ustawione jest przekierowanie z portu 80 na port 443 (http → https)?
Skoro masz w Cloudflare darmowego DNSa to warto rozważyć DNS-01 challenge (Challenge Types - Let's Encrypt - Free SSL/TLS Certificates)

P.S. Widzę, że chronisz swoją domenę (która i tak jest publiczna), OK, rozumiem ale jej ujawnienie przyśpieszy rozwiązywanie problemu bo wystarczy sprawdzić dostepność kilku URL i wskazać potencjalne problemy.

Tak port jest otwarty 80 —> 80 + adres HA. Podobnie jest z portem 443 i pozostałymi.
Domena to “sudol.sanok.pl” - i tak naprawdę bez problemu dostaję się po niej z różnych zewnętrznych sieci.

Zapomniałem dodać, że dużo wcześniej testowałem dostęp przez Home Assistant Cloud. Dostęp ten w pewnym momencie został wyłączony i później działałem już tylko i wyłącznie na swojej domenie.

Chyba że przyczyną są jakieś pozostałości po tamtej instalacji.

Tak może masz na routerze ale po wejściu na adres http://fake.domain.pl/ następuje przekierowanie na https://fake.domain.pl/ czyli odnowienie certyfikatu nie będzie możliwe bo nie da sie otworzyć URLa: http://fake.domain.pl/.well-known/acme-challenge/<TOKEN>.
Druga sprawa: skoro masz włączone proxy na Cloudflare (ikonka chmurki), to Twój certyfikat jest podmieniany na certyfikat podpisany przez Cloudflare (sni.cloudflaressl.com), praktycznie nie potrzebujesz swojego certyfikatu :wink:

Dziękuję @macek za usystematyzowanie mojego myślenia. Wygląda na to, że problem został rozwiązany.
W ustawieniach Cloudflare miałem wymuszony protokół SSL/TLS na serwer HA i dlatego nie miało prawa komunikować się na porcie 80.
Wyłączyłem SSL/TLS zaktualizowałem certyfikat i ponownie powróciłem do bezpiecznych ustawień.

Oto log z Let’s Encrypt

- Congratulations! Your certificate and chain have been saved at:

  • /data/letsencrypt/live/sudol.sanok.pl/fullchain.pem*
  • Your key file has been saved at:*
  • /data/letsencrypt/live/sudol.sanok.pl/privkey.pem*
  • Your cert will expire on 2021-05-30. To obtain a new or tweaked*
  • version of this certificate in the future, simply run certbot*
  • again. To non-interactively renew all of your certificates, run*
  • “certbot renew”*

na tą chwilę mam już komunikat :

[15:36:29] INFO: Selected http verification
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Cert not yet due for renewal
Keeping the existing certificate
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Certificate not yet due for renewal; no action taken.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Dzięki piękne :slight_smile:

Proszę bardzo.
Warto dodać monitoring ważności certyfikatu Certificate Expiry - Home Assistant i ustawić stosowne powiadomienie.

P.S. Jak chcesz to zamień w postach rzeczywistą domenę na fake’ową: fake.domain.pl :wink: .

Integracja z Certificate Expiry włączona. Super sprawa może być w połączeniu z powiadomieniami (chociaż tak naprawdę to przypomnienia przychodzą też z Cloudflare w email.

Czy mógłbyś rozwinąć jeszcze temat fake domeny - bo nie bardzo kumam?

Ja w swoich postach wszędzie w miejsce Twojej domeny sxxxx.sxxxx.pl wpisałem fake.domain.pl żeby nadal Twoja domena była “chroniona” :grin:.

OK. Jeszcze raz dzięki wielkie za pomoc !!!