Zabezpiecz swoją stronę www za darmo certyfikatem SSL od Let’s Encrypt

Jakiś czas temu pisałem o starcie usługi dostarczające darmowe certyfikaty SSL dla stron internetowych – Let’s Encrypt.

Usługa wyszła już z fazy beta, nadal jest w fazie beta jednak działa naprawdę dobrze i otrzymanie certyfikatu przebiega bez żadnych problemów.

holas.pl z certyfikatem z Let's Encrypt

Aby z niej skorzystać trzeba pobrać klienta i postąpić zgodnie z jego instrukcją. Niestety aktualnie nie ma paczki na Debiana Jessie więc postanowiłem użyć jednego z alternatywnych klientów, który jest skryptem w bashu i jest prosty jak „konstrukcja cepa” – https://github.com/Neilpang/acme.sh

Używając powyższego skryptu można wszystko zrobić dosłownie w 5 minut :). Wspomnę tylko, że skrypt ma instalator (pkt. 1 lub 2 ze strony na githubie) i inne ułatwiacze ale ja lubię mieć kontrolę nad tym co się dzieje więc z nich nie korzystałem.

Na wstępie ustalmy do celów poradnika, że wszystko będziemy wykonywać z root’a (oczywiście nie trzeba ale zakładamy tak w celu uproszczenia) oraz:

/root/.acme.sh/acme.sh – miejsce składowania skryptów klienta
mojastrona.pl – strona, dla której chcemy uzyskać certyfikat
/mnt/www/mojastrona.pl – katalog na dysku naszej strony
/etc/apache2 – lokalizacja apache wraz z plikami konfiguracji

Pierwszym naszym krokiem powinno być pobranie wymaganych plików klienta. W tym celu przechodzimy (zakładamy w razie potrzeby) do katalogu

/root/.acme.sh/acme.sh

i wykonujemy komendę

git clone https://github.com/Neilpang/acme.sh

Jeśli nie mamy gita to go instalujemy lub wchodzimy na stronę projektu, ręcznie pobieramy pliki i je wypakowujemy.

Następnym krokiem (dla wygody tylko) jest zrobienie symlinka z katalogu gdzie będą nasze certyfikaty do katalogu apache. Wykonujemy to komendą

ln -s /root/.acme.sh/ /etc/apache2/letsencrypt

Po wykonaniu powyższych kroków oraz upewnieniu się, że nasza strona jest dostępna z internetu należy pobrać certyfikat

./acme.sh issue /mnt/www/mojastrona.pl/ mojastrona.pl

lub jeśli mamy jakieś aliasy (np. www.mojastrona.pl) to

./acme.sh issue /mnt/www/mojastrona.pl/ mojastrona.pl www.mojastrona.pl

Jeśli nasza strona była dostępna z internetu to powinniśmy otrzymać certyfikat, a potrzebne pliki zapisane zostaną w katalogu

/root/.acme.sh/mojastrona.pl/

Pozostało nam już tylko poprawić konfigurację apache aby wskazać nasze certyfikaty (dobry poradnik jak skonfigurować SSL w apache znajduje się tu – krok 3 i 4). W tym celu w pliku konfiguracyjnym należy wskazać tak aby opcja

SSLCACertificateFile  kierowała do ca.cer
SSLCertificateFile kierowała do pliku .cer
SSLCertificateKeyFile kierowała do pliku .key

np.

SSLCACertificateFile /etc/apache2/letsencrypt/mojastrona.pl/ca.cer
SSLCertificateFile /etc/apache2/letsencrypt/mojastrona.pl/mojastrona.pl.cer
SSLCertificateKeyFile /etc/apache2/letsencrypt/mojastrona.pl/mojastrona.pl.key

oraz przeładować apache

service apache2 reload

O tego momentu strona powinna zgłaszać się z certyfikatem od Let’s Encrypt.

Dodatkowo warto ustawić automatyczne odnawianie certyfikatów gdyż mają one ważność 90 dni.

W tym celu najprościej stworzyć wykonywalny skrypt, np.

acme.sh_cron

z zawartości np.

#!/bin/sh
/root/.acme.sh/acme.sh/acme.sh cron >> /var/log/le-renew.log
service apache2 reload

i przenieść go do

/etc/cron.daily

Jak widać proces nie jest przesadnie skomplikowany i po wstępnej konfiguracji raczej banalny. Docelowo prawdopodobnie i tak wybiorę oficjalnego klienta ale pierw musi w repozytoriach Debiana Jessie zostać udostępniona oficjalna paczka.

Powodzenia w szyfrowaniu! 🙂

EDIT:
Skrypt zmienił nazwę więc powyższy opis został odpowiednio dostosowany.

Własny domowy serwer – Banana Pi

Jakiś czas temu zostałem posiadaczem mini komputera Banana Pi jako mocniejszej i lepiej wyposażonej wersji Raspberry Pi.

Za przemawiało:

  • CPU: 2x1GHz
  • RAM: 1GB DDR3
  • Gigabit Ethernet
  • port SATA (dla mnie to wisienka na torcie)

Całość postanowiłem wykorzystać jako działający na Debianie (dystrybucja Bananian) przez 24/7 serwer:

  • multimediów (minidlna – aby nie włączać innego komputera za każdym razem jak najdzie mnie ochota posłuchać muzyki czy coś zobaczyć na TV)
  • ssh (aby można było tym headless serverem zarządzać)
  • vpn (openvpn – aby bez obaw móc korzystać z publicznych sieci WiFi oraz mieć łatwy dostęp do domowej sieci lokalnej)
  • vnc (tightvnc  -jakby trzeba było coś uruchomić w trybie graficznym)
  • www (LAMP – strona, którą czytasz na nim się znajduje + parę innych na własne potrzeby)
  • backupu (tu akurat bez oprogramowania i tylko kilka skryptów bashowych odpalanych z crona)
  • downloadu plików (aria2 i curl – jeśli starczy proste pobieranie z konsoli lub jDownloader w trybie graficznym)
  • [w przyszłości] monitoringu (jak tylko uda się złapać w rozsądnej cenie kamerkę z trybem nocnym co działa pod Linuxem)

Całość działa bardzo szybko, sprawnie i co najważniejsze bardzo stabilnie. Jeśli chodzi o zużycie prądu to wydaje mi się, że nawet spadło gdyż nie potrzebuję już uruchamiać starego Core 2 Duo aby posłuchać muzyki czy zobaczyć coś na TV (pewno godzina jego chodzenia to z dzień pracy Banana Pi).

Banana Pi - gotowy zestaw
Banana Pi w obudowie oraz podłączonym dyskiem SATA i starym pendrive 4GB na backupy.
Banana Pi od strony konsoli administratora
Banana Pi od strony konsoli administratora

Jeśli, ktoś zastanawia się czy warto i ma podstawowe umiejętności zarządzania Linuxem to moim zdaniem warto gdyż do Debiania materiałów jest co niemiara i wszystko można wyczytać.

TV z DLNA i server z mediami (linux)

Niedawno nabyłem TV z obsługa DLNA i postanowiłem postawić sobie serwer, który mógłby serwować mi video, audio i obrazy do niego. Po długich bojach pod Windowsem doszedłem do wniosku, że to jakaś parodia (100% procka, ładowanie zawartości katalogu trwające z minutę etc). Powiedziałem sobie trudno, będę zgrywać z laptopa na serwer i zabrałem się do konfiguracji na linuxie (w moim wypadku ubuntu).
Jakież było moje zdziwienie gdy po 10 minutach wszystko działało jak należy i skoki procka były do max 2-3%.
Oto co zrobiłem:

  1. pobrałem paczkę z minidlna stąd,
  2. następnie najnormalniej w świecie zainstalowałem,

    sudo dpkg -i nazwa_pakietu.deb

  3. i to już praktycznie koniec, serwer sam się dodał to startu podczas boota i jedyne co musiałem zmienić to ścieżki z mediami.
    W pliku /etc/minidlna.conf jest kawałek, który brzmi tak

    # set this to the directory you want scanned.
    # * if have multiple directories, you can have multiple media_dir= lines
    # * if you want to restrict a media_dir to a specific content type, you
    # can prepend the type, followed by a comma, to the directory:
    # + „A” for audio (eg. media_dir=A,/home/jmaggard/Music)
    # + „V” for video (eg. media_dir=V,/home/jmaggard/Videos)
    # + „P” for images (eg. media_dir=P,/home/jmaggard/Pictures)

    Po nim ustawiłem taką linie

    media_dir=/mnt

    Mówi on, że serwer ma szukać wideo, audio i obrazów w katalogu /mnt

  4. I to już koniec. Czasem trzeba ubić serwer i uruchomić z opcja -R

    minidlna -R

    co spowoduje przeskanowanie wszystkich ustawionych katalogów w poszukiwaniu mediów i tyle – max 10 minut ustawiania i filmy + napisy srt chodzą mi na TV wyśmienicie.

Mam nadzieję, że ktoś także skorzysta z tego sposobu :). Oczywiście jak zawsze w ramach możliwości postaram się pomóc w razie problemów.

edit:
W aktualnych wersjach Ubuntu minidlna jest normalnie dostępne w repozytoriach więc można np. z konsoli wpisać

sudo apt-get install minidlna