Certyfikat Let's Encrypt na współdzielonym hostingu

avatar icon
Tomasz Trybulewicz

Inicjatywa Let's Encrypt pozwala na łatwe, automatyczne oraz darmowe uzyskanie, przedłużanie a nawet instalację certyfikatów dla dowolnych domen.

Niestety, do poprawnego działania, narzędzie wymaga uruchamiania z konta root'a. Nie jest to problemem na dedykowanych serwerach, ale staje się blokadą na hostingu współdzielonym gdzie mamy tylko zwykłe konto użytkownika lub jedynie panel administracyjny.

Na szczęście certyfikat można uzyskać na dowolnej maszynie, na docelowym serwerze trzeba tylko umieścić jeden plik (per domena) którym udowodnimy że mamy władzę nad domeną, dla której certyfikat próbujemy uzyskać. Możemy skorzystać z linii komend lub po prostu wrzucić wymagane pliki do odpowiedniego katalogu dowolnym narzędziem.

Użyłem nowej maszyny wirtualnej z czystą instalacją Ubuntu 16.04 LTS. Zacząłem od instalacji potrzebnego pakietu:

apt-get update
apt-get upgrade
apt-get install letsencrypt

Następnie wysłałem żądanie utworzenia certyfikatów:

letsencrypt certonly --manual \
  -d www.barbaric.it -d barbaric.it \
  -m mail@example.com \
  --agree-tos --manual-public-ip-logging-ok

Komenda certonly powoduje przygotowanie certyfikatu bez jego instalacji. Parameter --manual wybiera ręczny sposób autoryzacji (dostaniemy listę poleceń które trzeba wykonać na serwerze), parametr -d dodaje domenę dla której chcę uzyskać certyfikat - od razu poprosiłem o gołą domenę oraz z prefiksem www (standardowa praktyka), -m to adres email który zostanie zapisany jako związany z certyfikatem (otrzymamy monity o konieczności odnowienia certyfikatu), potem zgodziłem się na warunki korzystania z usługi (żeby już nie potwierdzać tego później) oraz pozwoliłem na zalogowanie adresu IP z którego wysyłam żądanie.

W odpowiedzi dostajemy dość dużą instrukcję która sprowadza się do tego że pod adresem http://www.barbaric.it/.well-known/acme-challenge/losowy_plik ma pojawić się plik o podanej treści - można użyć przykładowych komend lub w dowolny sposób wstawić tam plik. Po upewnieniu się że wszystko jest OK, wciskamy ENTER. Po chwili pojawi się drugie tego typu zadanie, tym razem dla domeny bez prefiksu.

Kiedy wszystko przejdzie poprawnie, dostajemy informację, że w katalogu /etc/letsencrypt/live/www.barbaric.it/ znajdują się symlinki do wygenerowanych kluczy, które wystarczy wkleić w panelu zarządzania domenami naszego hostingu i wszystko powinno działać - można to sprawdzić na stronie SSL Server Test.