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.