ogarnięcie nowej rzeczywistości (w szczególności na nowym miejscu) nie jest proste.
wszystko jest jeszcze bardzo świeże, a jednocześnie tak doskonale znane :) wiecie może, że prowizorki trzymają się świetnie latami a zaczynają od prostego ’tylko na chwilę’? no właśnie :)
tak czy inaczej, grudniowe początki zaczęły się od prawdziwego horroru związanego z podniesieniem mojego serwera pocztowego z FreeBSD 9-STABLE (właśnie się zEoLował) do 11-STABLE. tradycyjny make buildworld
; make kernel KERNCONF=server
; mergemaster -FiU
; make installworld
; reboot
nie dało rady, z jakiegoś powody (WTF?!) zadziałało za to na dokładnie tych samych źródłach make buildworld buildkernel
; make installkernel
itd. jak powyżej - problemem był z jakiegoś powodu cam.c (multiple warnings treated as error
przy redefinicji jednej ze zmiennych.
drugą, daleko już spóźnioną sprawą było odświeżenie certyfikatów - zaczynając od tego do szyfrowania WWW (StartCom się skompromitował). okazało się, że port pod FreeBSD oczywiście jest, ale… w coś 5 wersjach, z których każda wymaga dwupiętrowych zależności. pkg
pokazywało jakieś dramatyczne ilości rzeczy do wymiany więc doszedłem do konsensusu z certbot
- wspierany przez EFF, wymaga zatrzymania na chwilę swojej usługi (z jakiegoś powodu plugin nginxa, który w notce post-install jest oznaczany jako ‘soon’ nadal nie jest dostępny), ale działa. jak? prosto:
# pkg install py27-certbot
! jak znam życie, już jutro znowu zmienią jego nazwę...
# service nginx stop
! zatrzymujemy serwis nginx żeby bezpiecznie podmienić
! certyfikaty z konfiguracji
#certbot certonly --standalone -d moja.domena.com
! oczywiście każdy wstawia własną... ważne, że musi być
! osiągalna z internetu; można wstawić więcej za kolejnymi
! -d [druga] -d [trzecia] etc
pozostaje odpowiedzieć na pytanie o mail ratunkowy, zaakceptować politykę użycia (po jej przeczytaniu!) i cieszyć się świeżymi certyfikatami.
domyślnie lądują one w specjalnie utworzonym na tą okazję katalogu:
/usr/local/etc/letsencrypt/live/moja.domena.com
Poprawka w konfiguracji nginx’a wymagana jest w dwóch miejscach - dla potomności, cała ważniejsza część sekcji SSL:
ssl on;
ssl_certificate /usr/local/etc/letsencrypt/live/moja.domena.com/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/moja.domena.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_cache shared:SSL:10m;
pozostaje odpalić nginx’a znowu:
service nginx start
i świat stał się bezpieczniejszy. teraz pozostaje jeszcze odświeżyć te od poczty… a potem zautomatyzować zarządzanie wszystkimi FreeBSD za pomocą właściwych narzędzi.