LetsEncrypt på sub-domän (uppdaterad)

Uppdatering – 2018-07-15 – Efter uppgradering till Debian 9 (Stretch) verkar det som att certbot slutat fungera. Klagade på att inte kunna importera jose! Vad det nu ska betyda. Men se längre ned för mer info om hur jag löste det problemet. Min första lösning med ”certbot standalone” visade sig också vara fel väg.

Jag har försökt att få LetsEncrypt att fungera en längre tid, men inte fått det att fungera. Deras mer automatiserade system har gett mig fel-meddelanden. Och jag har inte i stunden hittat något sätt att lösa de problem som eventuellt fanns.

Nu äntligen tog jag mig tid att verkligen försöka gå hela vägen.

Tack vare en sida på DigigtalOcean.com, tillsammans med en kommentar på LetsEncrypt.org lyckades jag hitta problemet.

I stort sett följde jag instruktionerna på DigitalOcean.  Punkt 3 att hämta certifikat var jag tvungen att göra lite annorlunda.

  1. Se till att ServerName är definierad i conf-filen under ”/etc/apache2/sites-enabled/” för webb-platsen.
  2. Se till att brandvägg är öppen för port 443 tcp.
  3. Hämta certifikat – gjorde enligt kommentar i länk 2
  4. Se till att certifikat kommer att uppdateras – certbot renew

Mer detaljerad vad jag gjorde

  1. Ser till att ”ServerName” är definierat i config-filerna för Apache.
    /etc/apache2/sites-available/000-default.conf
    ServerName = ”subdomain.domain.tld”
  2. Brandvägg såg jag till att jag öppnat port 443/tcp. Det är olika hur man gör för olika brandväggar, och beroende på om du kör något ramverk ovanpå. Tex Shorewall är rätt populär, men det finns ett antal andra.
  3. Enligt länk 2 skapar jag ett certifikat till den subdomän jag vill att den ska finnas för.
    certbot --authenticator standalone --installer apache -d sudbomain.domain.tld --pre-hook "service apache2 stop" --post-hook "service apache2 start"
    Jag kör apache 2, och instruktionerna var för NGINX. Så jag hoppas att de ändringar jag gjorde är rätt. Det verkade så i alla fall. Egentligen borde jag nog använda ”systemctl” som är det nya sättet att göra saker på.
  4. Se till att det finns ett cron-job som uppdaterar certifikaten. Det fanns redan installerat efter installation av certbot. Men jag hade stängt av den då jag först gjorde mina försök. I stort sett är det ett enkelt kommando:
    certbot renew
    Och det verkar fungera. Jag har iofs inte ännu sett något certifikat uppdateras, den säger ifrån att inget certifikat är på gång att gå ut. Så jag får vänta.

Problem

Hade jag haft den senaste versionen av ”certbot” hade det varit enkelt att sätta upp certifikaten för mina subdomäner. Nu visade det sig att certbot i Debian är lite för gammal, och LetsEncrypt har uppdaterat sina protokoll så den äldre fungerade inte med det enkla kommandot:

certbot --apache

Nu hittade jag åt hur man kunde göra på ett alternativt sätt, enligt kommentar på länk 2.

Problem efter uppgradering till Debian 9 – Stretch

Fick fel som klagade på att certbot inte kunde importera ”jose”. Letade på nätet ett tag tills jag fick reda på att vissa kunnat lösa problemet med att aktivera ”backports”, så jag gjorde också det.

deb http://ftp.debian.org/debian stretch-backports main

Med detta kunde jag installera följande.

apt-get install certbot python3-certbot python3-acme python3-cryptography  python3-josepy python3-setuptools -f -t stretch-backports

Det verkar fungera nu. Bara att avvakta till nästa cron-jobb och se om det fungerar.

https://backports.debian.org/Instructions/

https://github.com/certbot/certbot/issues/5599

Efter ett dygn väntan och kolla om uppdatering fungerar, så visar det sig att det var ytterligare problem. Hittade dokumentation till certbot.

https://certbot.eff.org/lets-encrypt/debianstretch-apache.html

sudo certbot --authenticator webroot --installer apache

Ovan kod verkar löst problemet. Återstår att se om det blir några fler problem. Scriptet frågar efter ”webroot” för varje domän som läggs till. Eller först frågar om man vill lägga till en ny. Jag hoppas att jag kommer ihåg hur jag gjorde nästa gång jag behöver detta. Det lär dröja i alla fall 2,5 månader.

Scriptet avslutar med att rekommendera att testa domänen på:

https://www.ssllabs.com/ssltest/analyze.html

Tankar

Jag hoppas att jag kan förstå vad jag skrivit. Om jag i framtiden behöver göra om detta, så hoppas jag att jag förstår. Det är inte helt enkelt att förstå allt, då man inte jobbar med detta. Jag tycker mig ha en god grund-kunskap, men det är detaljerna som ofta gör det.

Jag har skrivit ett dokument som jag kan titta i, om det skulle behövas. ”LetsEncrypt – 2018-04-28.odt”.

Länkar

  1. https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8
  2. https://community.letsencrypt.org/t/solution-client-with-the-currently-selected-authenticator-does-not-support-any-combination-of-challenges-that-will-satisfy-the-ca/49983
  3. https://backports.debian.org/Instructions/
  4. https://github.com/certbot/certbot/issues/5599
  5. https://certbot.eff.org/lets-encrypt/debianstretch-apache.html
  6. https://certbot.eff.org/docs/using.html

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *